├── SpectClient Logo2.png
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── src
└── main
│ ├── resources
│ ├── darwin
│ │ └── libdiscord-rpc.dylib
│ ├── spectclient-forge-logo.png
│ ├── win32-x86
│ │ └── discord-rpc.dll
│ ├── win32-x86-64
│ │ └── discord-rpc.dll
│ ├── linux-x86-64
│ │ └── libdiscord-rpc.so
│ ├── assets
│ │ └── spc
│ │ │ └── textures
│ │ │ ├── spectclient-cape.png
│ │ │ └── spectclient-transparent.png
│ ├── mcmod.info
│ └── mixins.spectclient.json
│ └── java
│ └── me
│ └── SaberAspect
│ ├── SpectClient
│ ├── client
│ │ ├── notification
│ │ │ ├── Notification.java
│ │ │ └── NotificationManager.java
│ │ ├── ui
│ │ │ ├── TabGui.java
│ │ │ └── clickgui
│ │ │ │ ├── HudEditor.java
│ │ │ │ └── SyncableColorComponent.java
│ │ ├── module
│ │ │ ├── modules
│ │ │ │ ├── client
│ │ │ │ │ ├── ChatNotifications.java
│ │ │ │ │ ├── Capes.java
│ │ │ │ │ ├── MainMenuWatermark.java
│ │ │ │ │ ├── DiscordRichPresence.java
│ │ │ │ │ ├── ClientFont.java
│ │ │ │ │ └── PayMe.java
│ │ │ │ ├── movement
│ │ │ │ │ ├── LongJump.java
│ │ │ │ │ ├── Sneak.java
│ │ │ │ │ ├── Scaffold.java
│ │ │ │ │ ├── AutoWalk.java
│ │ │ │ │ ├── Sprint.java
│ │ │ │ │ ├── ReverseStep.java
│ │ │ │ │ ├── GuiMove.java
│ │ │ │ │ └── NoSlow.java
│ │ │ │ ├── player
│ │ │ │ │ ├── ChatBot.java
│ │ │ │ │ ├── Multitask.java
│ │ │ │ │ ├── ElytraReplace.java
│ │ │ │ │ ├── AutoRespawn.java
│ │ │ │ │ ├── AutoMine.java
│ │ │ │ │ ├── DeathCoords.java
│ │ │ │ │ ├── AutoUse.java
│ │ │ │ │ ├── LiquidPlace.java
│ │ │ │ │ ├── NoPush.java
│ │ │ │ │ ├── AutoDisconnect.java
│ │ │ │ │ ├── NoFall.java
│ │ │ │ │ ├── InventoryPlus.java
│ │ │ │ │ ├── Velocity.java
│ │ │ │ │ ├── Mcf.java
│ │ │ │ │ ├── ChatSuffix.java
│ │ │ │ │ ├── ChestStealer.java
│ │ │ │ │ └── AutoReconnect.java
│ │ │ │ ├── pvp
│ │ │ │ │ ├── AutoHut.java
│ │ │ │ │ ├── AimBot.java
│ │ │ │ │ ├── AutoTrap.java
│ │ │ │ │ ├── SmartHotbar.java
│ │ │ │ │ ├── LogOutSpot.java
│ │ │ │ │ ├── AutoClicker.java
│ │ │ │ │ ├── FootExp.java
│ │ │ │ │ ├── FastUse.java
│ │ │ │ │ ├── Blink.java
│ │ │ │ │ └── Criticals.java
│ │ │ │ ├── render
│ │ │ │ │ ├── Xray.java
│ │ │ │ │ ├── NewChunks.java
│ │ │ │ │ ├── Nametags.java
│ │ │ │ │ ├── Peek.java
│ │ │ │ │ ├── CameraClip.java
│ │ │ │ │ ├── LowOffHand.java
│ │ │ │ │ ├── World.java
│ │ │ │ │ ├── FullBright.java
│ │ │ │ │ ├── DamageTiltCorrection.java
│ │ │ │ │ └── ViewModel.java
│ │ │ │ ├── exploits
│ │ │ │ │ ├── ElytraFly.java
│ │ │ │ │ ├── Dupe.java
│ │ │ │ │ ├── AntiNick.java
│ │ │ │ │ ├── AntiSwing.java
│ │ │ │ │ ├── PortalGodMode.java
│ │ │ │ │ ├── Timer.java
│ │ │ │ │ ├── NoModList.java
│ │ │ │ │ ├── AntiHunger.java
│ │ │ │ │ └── PacketCancellor.java
│ │ │ │ ├── bot
│ │ │ │ │ └── OffHandBot.java
│ │ │ │ └── hud
│ │ │ │ │ ├── Watermark.java
│ │ │ │ │ ├── Frames.java
│ │ │ │ │ ├── KillAuraHud.java
│ │ │ │ │ ├── SurroundHud.java
│ │ │ │ │ ├── AutoCrystalHud.java
│ │ │ │ │ ├── Coords.java
│ │ │ │ │ ├── Totems.java
│ │ │ │ │ ├── Ping.java
│ │ │ │ │ └── PlayerModel.java
│ │ │ ├── Category.java
│ │ │ └── HudModule.java
│ │ ├── friend
│ │ │ ├── Friend.java
│ │ │ └── FriendManager.java
│ │ ├── setting
│ │ │ ├── Setting.java
│ │ │ ├── settings
│ │ │ │ ├── BooleanSetting.java
│ │ │ │ ├── KeybindSetting.java
│ │ │ │ ├── ModeSetting.java
│ │ │ │ ├── ColorSetting.java
│ │ │ │ └── NumberSetting.java
│ │ │ └── SettingManager.java
│ │ └── command
│ │ │ ├── commands
│ │ │ ├── Prefix.java
│ │ │ ├── Toggle.java
│ │ │ ├── Login.java
│ │ │ ├── MobOwner.java
│ │ │ ├── Vanish.java
│ │ │ ├── Friend.java
│ │ │ ├── Bind.java
│ │ │ ├── Clip.java
│ │ │ └── Help.java
│ │ │ └── Command.java
│ └── api
│ │ ├── proxy
│ │ ├── CommonProxy.java
│ │ └── ClientProxy.java
│ │ ├── event
│ │ ├── events
│ │ │ ├── HandActiveEvent.java
│ │ │ ├── BossbarEvent.java
│ │ │ ├── WaterPushEvent.java
│ │ │ ├── RenderCameraEvent.java
│ │ │ ├── RenderRainEvent.java
│ │ │ ├── CanCollideCheckEvent.java
│ │ │ ├── PlayerUpdateMoveStateEvent.java
│ │ │ ├── PlayerJumpEvent.java
│ │ │ ├── PlayerUpdateEvent.java
│ │ │ ├── PlayerMotionUpdateEvent.java
│ │ │ ├── PlayerJoinEvent.java
│ │ │ ├── PlayerLeaveEvent.java
│ │ │ ├── RenderEvent.java
│ │ │ ├── TotemPopEvent.java
│ │ │ ├── CollisionEvent.java
│ │ │ ├── TransformSideFirstPersonEvent.java
│ │ │ ├── JumpEvent.java
│ │ │ ├── DestroyBlockEvent.java
│ │ │ ├── NetworkPacketEvent.java
│ │ │ ├── RenderEntityNameEvent.java
│ │ │ ├── DamageBlockEvent.java
│ │ │ ├── LiquidCollisionBBEvent.java
│ │ │ ├── PacketEvent.java
│ │ │ └── PlayerMoveEvent.java
│ │ └── Event.java
│ │ ├── util
│ │ ├── render
│ │ │ ├── crystal
│ │ │ │ └── CrystalPretty.java
│ │ │ ├── Cape.java
│ │ │ ├── JColor.java
│ │ │ └── ColorMain.java
│ │ ├── world
│ │ │ ├── EntitySize.java
│ │ │ ├── JTimer.java
│ │ │ ├── TpsUtils.java
│ │ │ ├── GeometryMasks.java
│ │ │ ├── Location.java
│ │ │ └── EntityUtils.java
│ │ ├── damagetilt
│ │ │ ├── PacketHandler.java
│ │ │ └── MessageUpdateAttackYaw.java
│ │ ├── Wrapper.java
│ │ ├── font
│ │ │ └── FontUtils.java
│ │ ├── Login
│ │ │ ├── ChatUtils.java
│ │ │ └── Mapping.java
│ │ └── misc
│ │ │ └── Discord.java
│ │ ├── mixin
│ │ ├── mixins
│ │ │ ├── MixinRender.java
│ │ │ ├── accessor
│ │ │ │ └── AccessorEntityPlayerSP.java
│ │ │ ├── MixinPlayerControllerMP.java
│ │ │ ├── MixinWorld.java
│ │ │ ├── MixinGuiIngame.java
│ │ │ ├── MixinBlockLiquid.java
│ │ │ ├── MixinBlockSlimeBlock.java
│ │ │ ├── MixinRenderPlayer.java
│ │ │ ├── MixinBlockWeb.java
│ │ │ ├── MixinBlockSoulSand.java
│ │ │ ├── MixinItemRenderer.java
│ │ │ ├── MixinGuiPlayerTabOverlay.java
│ │ │ ├── MixinAbstractClientPlayer.java
│ │ │ ├── MixinEntityPlayer.java
│ │ │ ├── MixinGuiMainMenu.java
│ │ │ ├── MixinEntityRenderer.java
│ │ │ ├── MixinMovementInputFromOptions.java
│ │ │ ├── MixinMinecraft.java
│ │ │ ├── MixinEntity.java
│ │ │ ├── MixinEntityPlayerSP.java
│ │ │ └── MixinNetworkManager.java
│ │ └── MixinLoader.java
│ │ └── save
│ │ ├── ConfigStopper.java
│ │ ├── ClickGuiLoad.java
│ │ └── ClickGuiSave.java
│ └── Reference.java
├── _config.yml
├── gradle.properties
├── index.md
├── LICENSE
├── global.css
├── _layouts
└── default.html
└── gradlew.bat
/SpectClient Logo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XeonLyfe/SpectClient/HEAD/SpectClient Logo2.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XeonLyfe/SpectClient/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/src/main/resources/darwin/libdiscord-rpc.dylib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XeonLyfe/SpectClient/HEAD/src/main/resources/darwin/libdiscord-rpc.dylib
--------------------------------------------------------------------------------
/src/main/resources/spectclient-forge-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XeonLyfe/SpectClient/HEAD/src/main/resources/spectclient-forge-logo.png
--------------------------------------------------------------------------------
/src/main/resources/win32-x86/discord-rpc.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XeonLyfe/SpectClient/HEAD/src/main/resources/win32-x86/discord-rpc.dll
--------------------------------------------------------------------------------
/src/main/resources/win32-x86-64/discord-rpc.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XeonLyfe/SpectClient/HEAD/src/main/resources/win32-x86-64/discord-rpc.dll
--------------------------------------------------------------------------------
/src/main/resources/linux-x86-64/libdiscord-rpc.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XeonLyfe/SpectClient/HEAD/src/main/resources/linux-x86-64/libdiscord-rpc.so
--------------------------------------------------------------------------------
/src/main/resources/assets/spc/textures/spectclient-cape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XeonLyfe/SpectClient/HEAD/src/main/resources/assets/spc/textures/spectclient-cape.png
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/notification/Notification.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.notification;
2 |
3 | public class Notification {
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/ui/TabGui.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.ui;
2 |
3 | public class TabGui {
4 | // vast void of emptiness.....
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/resources/assets/spc/textures/spectclient-transparent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XeonLyfe/SpectClient/HEAD/src/main/resources/assets/spc/textures/spectclient-transparent.png
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/notification/NotificationManager.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.notification;
2 |
3 | public class NotificationManager {
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/client/ChatNotifications.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.client;
2 |
3 | public class ChatNotifications {
4 |
5 | }
6 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/proxy/CommonProxy.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.proxy;
2 |
3 | /*
4 | * Written by @SrgantMooMoo on 11/17/20.
5 | */
6 |
7 | public class CommonProxy {
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/HandActiveEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class HandActiveEvent extends Event {}
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/BossbarEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class BossbarEvent extends Event {
6 |
7 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/WaterPushEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class WaterPushEvent extends Event {
6 |
7 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/proxy/ClientProxy.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.proxy;
2 |
3 | /*
4 | * Written by @SaberAspect on 4/6/21.
5 | */
6 |
7 | public class ClientProxy extends CommonProxy {
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/RenderCameraEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class RenderCameraEvent extends Event {
6 |
7 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/RenderRainEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class RenderRainEvent extends Event {
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/CanCollideCheckEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class CanCollideCheckEvent extends Event {
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/PlayerUpdateMoveStateEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class PlayerUpdateMoveStateEvent extends Event {
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/render/crystal/CrystalPretty.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.render.crystal;
2 |
3 | import net.minecraft.client.Minecraft;
4 |
5 | public class CrystalPretty {
6 | public Minecraft mc = Minecraft.getMinecraft();
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/PlayerJumpEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class PlayerJumpEvent extends Event {
6 |
7 | public PlayerJumpEvent() {
8 | super();
9 | }
10 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/PlayerUpdateEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class PlayerUpdateEvent extends Event {
6 | public PlayerUpdateEvent() {
7 | super();
8 | }
9 | }
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | title: SpectClient
2 | description: A 1.12.2 anarchy client
3 | show_downloads: true
4 | github:
5 | repository_url: https://github.com/SaberAspect/SpectClient
6 | jar_url: https://github.com/SaberAspect/SpectClient/releases/download/0.5.0/SpectClient.jar
7 | cur_ver: 0.5.0
8 | theme: jekyll-theme-cayman
9 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/friend/Friend.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.friend;
2 |
3 | public class Friend {
4 |
5 | String name;
6 |
7 | public Friend(String name) {
8 | this.name = name;
9 | }
10 |
11 | public String getName() {
12 | return this.name;
13 | }
14 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/PlayerMotionUpdateEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class PlayerMotionUpdateEvent extends Event {
6 | public PlayerMotionUpdateEvent(Era era) {
7 | super(era);
8 | }
9 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/world/EntitySize.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.world;
2 |
3 | public class EntitySize {
4 | public float width;
5 | public float height;
6 |
7 | public EntitySize(float width, float height) {
8 | this.width = width;
9 | this.height = height;
10 | }
11 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/setting/Setting.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.setting;
2 |
3 | import me.SaberAspect.SpectClient.client.module.Module;
4 |
5 | /*
6 | * Written by @SrgantMooMoo on 11/17/20.
7 | */
8 |
9 | public abstract class Setting {
10 |
11 | public String name;
12 | public Module parent;
13 | public boolean focused;
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/resources/mcmod.info:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "modid": "spc",
4 | "name": "SpectClient",
5 | "description": "a minecraft client for 1.12.2 anarchy servers.",
6 | "version": "2.010",
7 | "mcversion": "1.12.2",
8 | "url": "https://github.com/SaberAspect/SpectClient",
9 | "authorList": ["SaberAspect"],
10 | "credits": ".",
11 | "logoFile": "spectclient-forge-logo.png",
12 | "screenshots": [],
13 | "dependencies": []
14 | }
15 | ]
16 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Sets default memory used for gradle commands. Can be overridden by user or command line properties.
2 | # This is required to provide enough memory for the Minecraft decompilation process.
3 | org.gradle.jvmargs=-Xmx3G
4 | modGroup=me.SaberAspect
5 | modVersion=2
6 | modBaseName=SpectClient
7 | forgeVersion=1.12.2-14.23.5.2847
8 | # 1.12.2-14.23.0.2531
9 | #mcpVersion=snapshot_20170605
10 | mcpVersion=snapshot_20180814
11 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/PlayerJoinEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class PlayerJoinEvent extends Event {
6 |
7 | private final String name;
8 |
9 | public PlayerJoinEvent(String name) {
10 | super();
11 | this.name = name;
12 | }
13 |
14 | public String getName() {
15 | return this.name;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/PlayerLeaveEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class PlayerLeaveEvent extends Event {
6 |
7 | private final String name;
8 |
9 | public PlayerLeaveEvent(String name) {
10 | super();
11 | this.name = name;
12 | }
13 |
14 | public String getName() {
15 | return this.name;
16 | }
17 | }
--------------------------------------------------------------------------------
/index.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | - Player
8 | - Visual
9 | - Coambat
10 |
14 |
15 | - Another
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/RenderEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 |
5 | public class RenderEvent extends Event {
6 |
7 | private final float partialTicks;
8 |
9 | public RenderEvent(float partialTicks) {
10 | super();
11 | this.partialTicks = partialTicks;
12 | }
13 |
14 | public float getPartialTicks() {
15 | return this.partialTicks;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinRender.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.renderer.entity.Render;
4 | import net.minecraft.entity.Entity;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.Shadow;
7 |
8 | @Mixin(Render.class)
9 | abstract class MixinRender {
10 |
11 | @Shadow
12 | protected abstract boolean bindEntityTexture(T entity);
13 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/TotemPopEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import net.minecraft.entity.Entity;
5 |
6 | public class TotemPopEvent extends Event {
7 |
8 | private final Entity entity;
9 |
10 | public TotemPopEvent(Entity entity) {
11 | super();
12 | this.entity = entity;
13 | }
14 |
15 | public Entity getEntity() {
16 | return this.entity;
17 | }
18 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/Category.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module;
2 | // i got the bot idea from momentum, thanks linus, very based client.
3 | public enum Category {
4 | PLAYER("player"), RENDER("render"), PVP("pvp"), EXPLOITS("exploits"), MOVEMENT("movement"), HUD("hud"), CLIENT("client"), BOT("bot");
5 |
6 | public String name;
7 | public int moduleIndex;
8 |
9 | Category(String name) {
10 | this.name = name;
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/movement/LongJump.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.movement;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class LongJump extends Module {
9 |
10 | public LongJump() {
11 | super ("longJump", "long, jump.", Keyboard.KEY_NONE, Category.MOVEMENT);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/movement/Sneak.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.movement;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class Sneak extends Module {
9 |
10 | public Sneak() {
11 | super ("sneak", "sneak... doesn't work rn.", Keyboard.KEY_NONE, Category.MOVEMENT);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/ChatBot.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class ChatBot extends Module {
9 |
10 | public ChatBot() {
11 | super ("chatBot", "bot chat.", Keyboard.KEY_NONE, Category.PLAYER);
12 | }
13 |
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/pvp/AutoHut.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.pvp;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class AutoHut extends Module {
9 |
10 | public AutoHut() {
11 | super ("autoHut", "automatically builds hut for u.", Keyboard.KEY_NONE, Category.PVP);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/render/Xray.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.render;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class Xray extends Module {
9 |
10 | public Xray() {
11 | super ("xray", "use commands for better customizability.", Keyboard.KEY_NONE, Category.RENDER);
12 | }
13 |
14 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/pvp/AimBot.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.pvp;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class AimBot extends Module {
9 |
10 | public AimBot() {
11 | super ("aimBot", "locks camera on to the closest target.", Keyboard.KEY_NONE, Category.PVP);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/pvp/AutoTrap.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.pvp;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class AutoTrap extends Module {
9 |
10 | public AutoTrap() {
11 | super ("autoTrap", "automatically traps opponent.", Keyboard.KEY_NONE, Category.PVP);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/pvp/SmartHotbar.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.pvp;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class SmartHotbar extends Module {
9 |
10 | public SmartHotbar() {
11 | super ("smartHotbar", "a smart hotbar (wip).", Keyboard.KEY_NONE, Category.PVP);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/exploits/ElytraFly.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.exploits;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class ElytraFly extends Module {
9 |
10 | public ElytraFly() {
11 | super ("elytraFly", "insta port.", Keyboard.KEY_NONE, Category.EXPLOITS);
12 | }
13 |
14 | }
15 |
16 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/pvp/LogOutSpot.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.pvp;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class LogOutSpot extends Module {
9 |
10 | public LogOutSpot() {
11 | super ("logOutSpot", "shows where a player logs out.", Keyboard.KEY_NONE, Category.PVP);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/bot/OffHandBot.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.bot;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class OffHandBot extends Module {
9 |
10 | public OffHandBot() {
11 | super("offHandBot", "A bot that manages your off hand.", Keyboard.KEY_NONE, Category.BOT);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/client/Capes.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.client;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class Capes extends Module {
9 |
10 | public Capes() {
11 | super("capes", "allows you to see your and others SpectClient capes.", Keyboard.KEY_NONE, Category.CLIENT);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/render/NewChunks.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.render;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class NewChunks extends Module {
9 |
10 | public NewChunks() {
11 | super ("newChunks", "shows when new chunks r generated.", Keyboard.KEY_NONE, Category.RENDER);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/CollisionEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import net.minecraft.entity.Entity;
5 |
6 | public final class CollisionEvent extends Event {
7 | private final Entity entity;
8 |
9 | public CollisionEvent(Entity entity)
10 | {
11 | this.entity = entity;
12 | }
13 |
14 | public Entity getEntity()
15 | {
16 | return entity;
17 | }
18 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/movement/Scaffold.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.movement;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class Scaffold extends Module {
9 |
10 | public Scaffold() {
11 | super ("scaffold", "places blocks under u automatically.", Keyboard.KEY_NONE, Category.MOVEMENT);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/Reference.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect;
2 |
3 | public class Reference {
4 | public static final String MOD_ID = "spc";
5 | public static final String NAME = "SpectClient";
6 | public static final String VERSION = "0.5.2";
7 | public static final String ACCEPTED_VERSIONS = "[1.12.2]";
8 | public static final String CLIENT_PROXY_CLASS = "me.SaberAspect.SpectClient.api.proxy.ClientProxy";
9 | public static final String COMMON_PROXY_CLASS = "me.SaberAspect.SpectClient.api.proxy.CommonProxy";
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/Multitask.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class Multitask extends Module {
9 |
10 | public Multitask() {
11 | super("multitask", "allows you to do different things in each hand.", Keyboard.KEY_NONE, Category.PLAYER);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/render/Nametags.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.render;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class Nametags extends Module {
9 |
10 | public Nametags() {
11 | super ("nametags", "gives more info on a persons nametag.", Keyboard.KEY_NONE, Category.RENDER);
12 | }
13 |
14 |
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/ElytraReplace.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class ElytraReplace extends Module {
9 |
10 | public ElytraReplace() {
11 | super ("elytraReplace", "automatically replaces a broken elytra.", Keyboard.KEY_NONE, Category.PLAYER);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/render/Peek.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.render;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class Peek extends Module {
9 |
10 | //look in me.srgantmoomoo.api.mixin.mixins.MixinGuiScreen
11 | public Peek() {
12 | super ("peek", "shows preview of wuts in a shulker.", Keyboard.KEY_NONE, Category.RENDER);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/TransformSideFirstPersonEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import net.minecraft.util.EnumHandSide;
5 |
6 | public class TransformSideFirstPersonEvent extends Event {
7 |
8 | private final EnumHandSide enumHandSide;
9 |
10 | public TransformSideFirstPersonEvent(EnumHandSide enumHandSide){
11 | this.enumHandSide = enumHandSide;
12 | }
13 |
14 | public EnumHandSide getEnumHandSide(){
15 | return this.enumHandSide;
16 | }
17 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/accessor/AccessorEntityPlayerSP.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.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 | /*
8 | * this is from gamesense, im just a gamesense skid don't talk to me.
9 | */
10 |
11 | @Mixin(EntityPlayerSP.class)
12 | public interface AccessorEntityPlayerSP {
13 |
14 | @Accessor("handActive")
15 | void gsSetHandActive(boolean value);
16 |
17 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/JumpEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import me.SaberAspect.SpectClient.api.util.world.Location;
5 |
6 | public class JumpEvent extends Event {
7 |
8 | private Location location;
9 |
10 | public JumpEvent(Location location) {
11 | this.location = location;
12 | }
13 |
14 | public Location getLocation() {
15 | return this.location;
16 | }
17 |
18 | public void setLocation(Location location) {
19 | this.location = location;
20 | }
21 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/DestroyBlockEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import net.minecraft.util.math.BlockPos;
5 |
6 | public class DestroyBlockEvent extends Event {
7 |
8 | BlockPos blockPos;
9 |
10 | public DestroyBlockEvent(BlockPos blockPos) {
11 | super();
12 | this.blockPos = blockPos;
13 | }
14 |
15 | public BlockPos getBlockPos() {
16 | return this.blockPos;
17 | }
18 |
19 | public void setBlockPos(BlockPos blockPos) {
20 | this.blockPos = blockPos;
21 | }
22 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/NetworkPacketEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import net.minecraft.network.Packet;
5 |
6 | public class NetworkPacketEvent extends Event {
7 |
8 | public Packet m_Packet;
9 |
10 |
11 | public NetworkPacketEvent(Packet p_Packet) {
12 | super();
13 | m_Packet = p_Packet;
14 | }
15 |
16 | public Packet GetPacket() {
17 | return m_Packet;
18 | }
19 |
20 | public Packet getPacket() {
21 | return m_Packet;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/client/MainMenuWatermark.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.client;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class MainMenuWatermark extends Module {
9 |
10 | public MainMenuWatermark() {
11 | super("mainMenuWatermark", "shows SpectClient on minecrafts main menu screen.", Keyboard.KEY_NONE, Category.CLIENT);
12 | toggled = true;
13 | }
14 | //check MixinGuiMainMenu :)
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/AutoRespawn.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class AutoRespawn extends Module {
9 |
10 | public AutoRespawn() {
11 | super("autoRespawn", "automatically respawns after death occurs.", Keyboard.KEY_NONE, Category.PLAYER);
12 | }
13 |
14 | public void onUpdate() {
15 | if(mc.player.isDead) {
16 | mc.player.respawnPlayer();
17 | }
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/damagetilt/PacketHandler.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.damagetilt;
2 |
3 | import net.minecraftforge.fml.common.network.NetworkRegistry;
4 | import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
5 | import net.minecraftforge.fml.relauncher.Side;
6 |
7 | public class PacketHandler {
8 | public static final SimpleNetworkWrapper instance = NetworkRegistry.INSTANCE.newSimpleChannel("damagetilt");
9 |
10 | public static void init() {
11 | instance.registerMessage(MessageUpdateAttackYaw.Handler.class, MessageUpdateAttackYaw.class, 0, Side.CLIENT);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/save/ConfigStopper.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.save;
2 |
3 | import java.io.IOException;
4 |
5 | import me.SaberAspect.Main;
6 |
7 | public class ConfigStopper extends Thread {
8 |
9 | @Override
10 | public void run() {
11 | saveConfig();
12 | }
13 |
14 | public static void saveConfig() {
15 | try {
16 | Main.clickGuiSave.clickGuiSave();
17 | Main.clickGuiSave.saveClickGUIPositions();
18 | Main.log.info("saved config.");
19 | }
20 | catch (IOException e) {
21 | e.printStackTrace();
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/exploits/Dupe.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.exploits;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class Dupe extends Module {
9 |
10 | public Dupe() {
11 | super ("dupe", "dupes everything in your inventory :).", Keyboard.KEY_NONE, Category.EXPLOITS);
12 | }
13 |
14 | public void onEnable() {
15 |
16 | if (mc.player != null)
17 | mc.player.sendChatMessage("NO SHOT!!! I just duped my whole inventory. SpectClan Rise up");
18 | disable();
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/exploits/AntiNick.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.exploits;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 |
8 | public class AntiNick extends Module {
9 |
10 | public AntiNick() {
11 | super("antiNick", "shows who is nicked in the player list.", Keyboard.KEY_NONE, Category.EXPLOITS);
12 | }
13 |
14 | public void onEnable() {
15 | /*try {
16 | Desktop.getDesktop().browse(URI.create("https://namemc.com/profile/" + mc.player.getName() + ".1"));
17 | } catch (Exception e) {}*/
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/client/DiscordRichPresence.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.client;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.api.util.misc.Discord;
6 | import me.SaberAspect.SpectClient.client.module.Category;
7 | import me.SaberAspect.SpectClient.client.module.Module;
8 |
9 | public class DiscordRichPresence extends Module {
10 |
11 | public DiscordRichPresence() {
12 | super ("discordRpc", "shows your are playing SpectClient on discord.", Keyboard.KEY_NONE, Category.CLIENT);
13 | }
14 |
15 | public void onEnable() {
16 | Discord.startRPC();
17 | }
18 |
19 | public void onDisable() {
20 | Discord.stopRPC();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/RenderEntityNameEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import net.minecraft.client.entity.AbstractClientPlayer;
5 |
6 | public class RenderEntityNameEvent extends Event {
7 |
8 | public AbstractClientPlayer Entity;
9 | public double X;
10 | public double Y;
11 | public double Z;
12 | public String Name;
13 | public double DistanceSq;
14 |
15 | public RenderEntityNameEvent(AbstractClientPlayer entityIn, double x, double y, double z, String name, double distanceSq) {
16 | Entity = entityIn;
17 | x = X;
18 | y = Y;
19 | z = Z;
20 | Name = name;
21 | DistanceSq = distanceSq;
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/save/ClickGuiLoad.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.save;
2 |
3 | import java.io.IOException;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.client.ui.clickgui.ClickGuiConfig;
7 |
8 |
9 |
10 | public class ClickGuiLoad {
11 |
12 | public ClickGuiLoad() {
13 | try {
14 | clickGuiLoad();
15 | }
16 | catch (IOException e) {
17 | e.printStackTrace();
18 | }
19 | }
20 |
21 | String fileName = "SpectClient/";
22 | String mainName = "clickGui/";
23 |
24 | public void clickGuiLoad() throws IOException {
25 | loadClickGUIPositions();
26 | }
27 |
28 | public void loadClickGUIPositions() throws IOException {
29 | Main.clickGui.gui.loadConfig(new ClickGuiConfig(fileName+mainName));
30 | }
31 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinPlayerControllerMP.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.multiplayer.PlayerControllerMP;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
10 |
11 | @Mixin(PlayerControllerMP.class)
12 | public abstract class MixinPlayerControllerMP {
13 | //author cookiedragon234
14 | @Inject(method = "resetBlockRemoving", at = @At("HEAD"), cancellable = true)
15 | private void resetBlock(CallbackInfo callbackInfo) {
16 | if (ModuleManager.isModuleEnabled("multitask")) {
17 | callbackInfo.cancel();
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/src/main/resources/mixins.spectclient.json:
--------------------------------------------------------------------------------
1 | {
2 | "required": true,
3 | "compatibilityLevel": "JAVA_8",
4 | "package": "me.SaberAspect.SpectClient.api.mixin.mixins",
5 | "refmap": "mixins.spectclient.refmap.json",
6 | "mixins": [
7 | "MixinBlockLiquid",
8 | "MixinBlockSlimeBlock",
9 | "MixinBlockSoulSand",
10 | "MixinBlockWeb",
11 | "MixinEntity",
12 | "MixinEntityPlayer",
13 | "MixinEntityPlayerSP",
14 | "MixinEntityRenderer",
15 | "MixinGuiMainMenu",
16 | "MixinGuiPlayerTabOverlay",
17 | "MixinGuiScreen",
18 | "MixinItemRenderer",
19 | "MixinMovementInputFromOptions",
20 | "MixinNetworkManager",
21 | "MixinGuiIngame",
22 | "MixinRender",
23 | "MixinRenderLivingBase",
24 | "MixinWorld",
25 | "MixinMinecraft",
26 | "MixinPlayerControllerMP",
27 | "MixinAbstractClientPlayer",
28 | "MixinRenderPlayer",
29 | "accessor.AccessorEntityPlayerSP"
30 | ]
31 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/Event.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event;
2 |
3 | import me.SaberAspect.SpectClient.api.util.Wrapper;
4 | import me.zero.alpine.type.Cancellable;
5 |
6 | public class Event extends Cancellable {
7 |
8 | private Era era = Era.PRE;
9 | private final float partialTicks;
10 |
11 | public Event() {
12 | partialTicks = Wrapper.getMinecraft().getRenderPartialTicks();
13 | }
14 |
15 | public Event(Era p_Era) {
16 | partialTicks = Wrapper.getMinecraft().getRenderPartialTicks();
17 | era = p_Era;
18 | }
19 |
20 | public Era getEra() {
21 | return era;
22 | }
23 |
24 | public float getPartialTicks() {
25 | return partialTicks;
26 | }
27 |
28 | public enum Era {
29 | PRE,
30 | PERI,
31 | POST
32 | }
33 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/movement/AutoWalk.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.movement;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import net.minecraft.client.settings.KeyBinding;
8 |
9 | public class AutoWalk extends Module {
10 |
11 | public AutoWalk() {
12 | super ("autoWalk", "automatically walks for you.", Keyboard.KEY_NONE, Category.MOVEMENT);
13 | }
14 |
15 | public void onDisable() {
16 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindForward.getKeyCode(), false);
17 | }
18 |
19 | public void onUpdate() {
20 | if(mc.currentScreen == null) {
21 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindForward.getKeyCode(), true);
22 | }
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/render/Cape.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.render;
2 |
3 | import java.io.BufferedReader;
4 | import java.io.InputStreamReader;
5 | import java.net.URL;
6 | import java.util.ArrayList;
7 | import java.util.List;
8 | import java.util.UUID;
9 |
10 | public class Cape {
11 |
12 | List uuids = new ArrayList<>();
13 |
14 | public Cape() {
15 | try {
16 | URL capesList = new URL("https://pastebin.com/raw/2K1zmXZc");
17 | BufferedReader in = new BufferedReader(new InputStreamReader(capesList.openStream()));
18 | String inputLine;
19 | while ((inputLine = in.readLine()) != null) {
20 | uuids.add(UUID.fromString(inputLine));
21 | }
22 | }
23 | catch(Exception e) {
24 | e.printStackTrace();
25 | }
26 | }
27 |
28 | public boolean hasCape(UUID id) {
29 | return uuids.contains(id);
30 | }
31 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/AutoMine.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import net.minecraft.client.settings.KeyBinding;
8 |
9 | public class AutoMine extends Module {
10 |
11 | public AutoMine() {
12 | super("autoMine", "automatically mines.", Keyboard.KEY_NONE, Category.PLAYER);
13 | }
14 |
15 | @Override
16 | public void onUpdate() {
17 | if(mc.currentScreen == null) KeyBinding.setKeyBindState(mc.gameSettings.keyBindAttack.getKeyCode(), true);
18 | else mc.playerController.isHittingBlock = true;
19 | }
20 |
21 | public void onDisable() {
22 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindAttack.getKeyCode(), false);
23 | }
24 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/DamageBlockEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import net.minecraft.util.EnumFacing;
5 | import net.minecraft.util.math.BlockPos;
6 |
7 | public class DamageBlockEvent extends Event {
8 |
9 | private BlockPos blockPos;
10 | private EnumFacing enumFacing;
11 |
12 | public DamageBlockEvent(BlockPos blockPos, EnumFacing enumFacing) {
13 | this.blockPos = blockPos;
14 | this.enumFacing = enumFacing;
15 | }
16 |
17 | public BlockPos getBlockPos() {
18 | return this.blockPos;
19 | }
20 |
21 | public void setBlockPos(BlockPos blockPos) {
22 | this.blockPos = blockPos;
23 | }
24 |
25 | public EnumFacing getEnumFacing() {
26 | return this.enumFacing;
27 | }
28 |
29 | public void setEnumFacing(EnumFacing enumFacing) {
30 | this.enumFacing = enumFacing;
31 | }
32 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/HudModule.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module;
2 |
3 | import java.awt.Point;
4 |
5 | import org.lwjgl.input.Keyboard;
6 |
7 | import com.lukflug.panelstudio.FixedComponent;
8 | import com.lukflug.panelstudio.theme.Theme;
9 |
10 | import me.SaberAspect.Main;
11 |
12 | /**
13 | * @author lukflug
14 | */
15 |
16 | public abstract class HudModule extends Module {
17 |
18 | protected FixedComponent component;
19 | protected Point position;
20 |
21 | public HudModule (String title, String description, Point defaultPos, Category category) {
22 | super(title, description, Keyboard.KEY_NONE, category);
23 | position = defaultPos;
24 | }
25 |
26 | public abstract void populate (Theme theme);
27 |
28 | public FixedComponent getComponent() {
29 | return component;
30 | }
31 |
32 | public void resetPosition() {
33 | component.setPosition(Main.clickGui.guiInterface,position);
34 | }
35 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/DeathCoords.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import com.mojang.realmsclient.gui.ChatFormatting;
6 |
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
10 |
11 | public class DeathCoords extends Module {
12 |
13 | public DeathCoords() {
14 | super ("deathCoords", "tells you your coords after death occurs.", Keyboard.KEY_NONE, Category.PLAYER);
15 | }
16 |
17 | public void onUpdate() {
18 | if(mc.player.isDead) {
19 | ModuleManager.addChatMessage(ChatFormatting.WHITE + "lol u just died loser" +
20 | ChatFormatting.GRAY + " (x)" + mc.player.getPosition().x + " (y)" + mc.player.getPosition().y + " (z)" + mc.player.getPosition().z);
21 | toggled = false;
22 | }
23 | }
24 |
25 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/AutoUse.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import net.minecraft.client.settings.KeyBinding;
8 | import net.minecraft.util.EnumHand;
9 |
10 | public class AutoUse extends Module {
11 |
12 | public AutoUse() {
13 | super("autoUse", "automatically uses whatever u r holding.", Keyboard.KEY_NONE, Category.PLAYER);
14 | }
15 |
16 | @Override
17 | public void onUpdate() {
18 | if(mc.currentScreen == null) KeyBinding.setKeyBindState(mc.gameSettings.keyBindUseItem.getKeyCode(), true);
19 | else mc.playerController.processRightClick(mc.player, mc.world, EnumHand.MAIN_HAND);
20 | }
21 |
22 | public void onDisable() {
23 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindUseItem.getKeyCode(), false);
24 | }
25 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinWorld.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import me.SaberAspect.Main;
4 | import me.SaberAspect.SpectClient.api.event.events.RenderRainEvent;
5 | import net.minecraft.world.World;
6 | import org.spongepowered.asm.mixin.Mixin;
7 | import org.spongepowered.asm.mixin.injection.At;
8 | import org.spongepowered.asm.mixin.injection.Inject;
9 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
10 |
11 | @Mixin(World.class)
12 | public class MixinWorld {
13 |
14 | @Inject(method = "getRainStrength", at = @At("HEAD"), cancellable = true)
15 | public void getRainStrength(float delta, CallbackInfoReturnable callback) {
16 | RenderRainEvent event = new RenderRainEvent();
17 | Main.EVENT_BUS.post(event);
18 | if (event.isCancelled()) {
19 | callback.cancel();
20 | callback.setReturnValue(0.0f);
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/world/JTimer.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.world;
2 |
3 | public class JTimer{
4 | private long current;
5 |
6 | public JTimer(){
7 | this.current = System.currentTimeMillis();
8 | }
9 |
10 | public boolean hasReached(final long delay){
11 | return System.currentTimeMillis() - this.current >= delay;
12 | }
13 |
14 | public boolean hasReached(final long delay, boolean reset){
15 | if (reset)
16 | reset();
17 | return System.currentTimeMillis() - this.current >= delay;
18 | }
19 |
20 | public void reset(){
21 | this.current = System.currentTimeMillis();
22 | }
23 |
24 | public long getTimePassed(){
25 | return System.currentTimeMillis() - this.current;
26 | }
27 |
28 | public boolean sleep(final long time){
29 | if (time() >= time){
30 | reset();
31 | return true;
32 | }
33 | return false;
34 | }
35 |
36 | public long time() {
37 | return System.currentTimeMillis() - current;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/Wrapper.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util;
2 |
3 | import net.minecraft.client.Minecraft;
4 | import net.minecraft.client.entity.EntityPlayerSP;
5 | import net.minecraft.client.gui.FontRenderer;
6 | import net.minecraft.world.World;
7 | import org.lwjgl.input.Keyboard;
8 |
9 | //Created by 086 on 11/11/2017.
10 |
11 | public class Wrapper{
12 |
13 | private static FontRenderer fontRenderer;
14 |
15 | public static Minecraft mc = Minecraft.getMinecraft();
16 |
17 | public static Minecraft getMinecraft(){
18 | return Minecraft.getMinecraft();
19 | }
20 |
21 | public static EntityPlayerSP getPlayer(){
22 | return getMinecraft().player;
23 | }
24 |
25 | public static World getWorld(){
26 | return getMinecraft().world;
27 | }
28 |
29 | public static int getKey(String keyname){
30 | return Keyboard.getKeyIndex(keyname.toUpperCase());
31 | }
32 |
33 | public static FontRenderer getFontRenderer(){
34 | return fontRenderer;
35 | }
36 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/command/commands/Prefix.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.command.commands;
2 |
3 | import com.mojang.realmsclient.gui.ChatFormatting;
4 |
5 | import me.SaberAspect.SpectClient.client.command.Command;
6 | import me.SaberAspect.SpectClient.client.command.CommandManager;
7 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
8 |
9 | public class Prefix extends Command {
10 | public Prefix() {
11 | super("prefix", "sets the command prefix.", "prefix ", "p");
12 | }
13 |
14 | @Override
15 | public void onCommand(String[] args, String command) {
16 | if(args.length == 1) {
17 | String key = args[0];
18 | CommandManager.setCommandPrefix(key);
19 | ModuleManager.addChatMessage(String.format(ChatFormatting.GREEN + "command prefix " + ChatFormatting.GRAY + "was set to " + ChatFormatting.GREEN + CommandManager.prefix));
20 | }
21 |
22 | if(args.length == 0) CommandManager.correctUsageMsg("", getName(), getSyntax());
23 | }
24 |
25 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/LiquidCollisionBBEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import net.minecraft.util.math.AxisAlignedBB;
5 | import net.minecraft.util.math.BlockPos;
6 |
7 | public class LiquidCollisionBBEvent extends Event {
8 |
9 | private AxisAlignedBB boundingBox;
10 | private BlockPos blockPos;
11 |
12 | public LiquidCollisionBBEvent() {
13 |
14 | }
15 |
16 | public LiquidCollisionBBEvent(BlockPos blockPos) {
17 | this.blockPos = blockPos;
18 | }
19 |
20 | public AxisAlignedBB getBoundingBox() {
21 | return boundingBox;
22 | }
23 |
24 | public void setBoundingBox(AxisAlignedBB boundingBox) {
25 | this.boundingBox = boundingBox;
26 | }
27 |
28 | public BlockPos getBlockPos() {
29 | return blockPos;
30 | }
31 |
32 | public void setBlockPos(BlockPos blockPos) {
33 | this.blockPos = blockPos;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/LiquidPlace.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.CanCollideCheckEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.zero.alpine.listener.EventHandler;
10 | import me.zero.alpine.listener.Listener;
11 |
12 | public class LiquidPlace extends Module {
13 |
14 | public LiquidPlace() {
15 | super ("liquidPlace", "lets u place blocks on liquid.", Keyboard.KEY_NONE, Category.PLAYER);
16 | }
17 |
18 | public void onEnable() {
19 | Main.EVENT_BUS.subscribe(this);
20 |
21 | }
22 |
23 | public void onDisable() {
24 | Main.EVENT_BUS.unsubscribe(this);
25 | }
26 |
27 | @EventHandler
28 | private Listener CanCollid = new Listener<>(event -> {
29 | event.cancel();
30 | });
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/render/CameraClip.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.render;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.RenderCameraEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.zero.alpine.listener.EventHandler;
10 | import me.zero.alpine.listener.Listener;
11 |
12 | public class CameraClip extends Module {
13 |
14 | public CameraClip() {
15 | super ("cameraClip", "camera clips when in 3rd person.", Keyboard.KEY_NONE, Category.RENDER);
16 | }
17 |
18 | public void onEnable() {
19 | Main.EVENT_BUS.subscribe(this);
20 | }
21 |
22 | public void onDisable() {
23 | Main.EVENT_BUS.unsubscribe(this);
24 | }
25 |
26 | @EventHandler
27 | private Listener onRenderCameraEvent = new Listener<>(event -> {
28 | event.cancel();
29 | });
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/PacketEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import net.minecraft.network.Packet;
5 |
6 | public class PacketEvent extends Event {
7 |
8 | private final Packet packet;
9 |
10 | public PacketEvent(Packet packet) {
11 | super();
12 | this.packet = packet;
13 | }
14 |
15 | public Packet getPacket() {
16 | return this.packet;
17 | }
18 |
19 | public static class Receive extends PacketEvent {
20 |
21 | public Receive(Packet packet) {
22 | super(packet);
23 | }
24 | }
25 |
26 | public static class Send extends PacketEvent {
27 | public Send(Packet packet) {
28 | super(packet);
29 | }
30 | }
31 |
32 | public static class PostReceive extends PacketEvent {
33 | public PostReceive(Packet packet) {
34 | super(packet);
35 | }
36 | }
37 |
38 | public static class PostSend extends PacketEvent {
39 | public PostSend(Packet packet) {
40 | super(packet);
41 | }
42 | }
43 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinGuiIngame.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.gui.GuiIngame;
4 | import net.minecraft.client.gui.ScaledResolution;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
9 |
10 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
11 | import me.SaberAspect.SpectClient.client.module.modules.render.NoRender;
12 |
13 | @Mixin(GuiIngame.class)
14 | public class MixinGuiIngame {
15 |
16 | @Inject(method = "renderPotionEffects", at = @At("HEAD"), cancellable = true)
17 | protected void renderPotionEffectsHook(ScaledResolution scaledRes, CallbackInfo callbackInfo) {
18 | if (ModuleManager.isModuleEnabled("noRender") && ((NoRender)ModuleManager.getModuleByName("noRender")).potionEffects.isEnabled()) {
19 | callbackInfo.cancel();
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/NoPush.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.WaterPushEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.zero.alpine.listener.EventHandler;
10 | import me.zero.alpine.listener.Listener;
11 |
12 | public class NoPush extends Module {
13 |
14 | public NoPush() {
15 | super ("noPush", "u cant get pushed, and u cant push.", Keyboard.KEY_NONE, Category.PLAYER);
16 | }
17 |
18 | @EventHandler
19 | private final Listener waterPushEventListener = new Listener<>(event -> {
20 | event.cancel();
21 | });
22 |
23 | public void onEnable() {
24 | Main.EVENT_BUS.subscribe(this);
25 | }
26 |
27 | public void onDisable() {
28 | Main.EVENT_BUS.unsubscribe(this);
29 | }
30 | }
31 |
32 | // Refrenced in MixinEntity
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/render/LowOffHand.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.render;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import me.SaberAspect.SpectClient.client.setting.settings.NumberSetting;
8 | import net.minecraft.client.renderer.ItemRenderer;
9 |
10 | /*
11 | * Written by @SrgantMooMoo on 11/17/20.
12 | */
13 |
14 | public class LowOffHand extends Module {
15 | public NumberSetting lowness = new NumberSetting("lowness", this, 0.7, 0, 1, 0.1);
16 |
17 | public LowOffHand() {
18 | super ("lowOffHand", "lowers the offhand.", Keyboard.KEY_NONE, Category.RENDER);
19 | this.addSettings(lowness);
20 | }
21 |
22 | ItemRenderer itemRenderer = mc.entityRenderer.itemRenderer;
23 |
24 |
25 | @Override
26 | public void onUpdate(){
27 | itemRenderer.equippedProgressOffHand = (float) lowness.getValue();
28 | }
29 |
30 | }
31 |
32 |
33 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/client/ClientFont.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.client;
2 |
3 | import java.awt.Font;
4 |
5 | import org.lwjgl.input.Keyboard;
6 |
7 | import me.SaberAspect.Main;
8 | import me.SaberAspect.SpectClient.api.util.font.CustomFontRenderer;
9 | import me.SaberAspect.SpectClient.client.module.Category;
10 | import me.SaberAspect.SpectClient.client.module.Module;
11 | import me.SaberAspect.SpectClient.client.setting.settings.ModeSetting;
12 | import net.minecraft.client.gui.GuiDisconnected;
13 | import net.minecraft.client.gui.GuiMainMenu;
14 | import net.minecraft.client.gui.GuiScreenServerList;
15 |
16 | public class ClientFont extends Module {
17 |
18 | public ClientFont() {
19 | super ("clientFont", "custom font for the client.", Keyboard.KEY_NONE, Category.CLIENT);
20 | }
21 |
22 | public void onEnable() {
23 |
24 | if(this.isOn()) {
25 | Main.customFontRenderer = new CustomFontRenderer(new Font("Verdana", Font.PLAIN, 18), true, true);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinBlockLiquid.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.block.BlockLiquid;
4 | import net.minecraft.block.state.IBlockState;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
9 |
10 | import me.SaberAspect.Main;
11 | import me.SaberAspect.SpectClient.api.event.events.CanCollideCheckEvent;
12 |
13 | @Mixin(BlockLiquid.class)
14 | public class MixinBlockLiquid {
15 |
16 | @Inject(method = "canCollideCheck", at = @At("HEAD"), cancellable = true)
17 | public void canCollideCheck(final IBlockState blockState, final boolean b, final CallbackInfoReturnable callbackInfoReturnable) {
18 | CanCollideCheckEvent event = new CanCollideCheckEvent();
19 | Main.EVENT_BUS.post(event);
20 | callbackInfoReturnable.setReturnValue(event.isCancelled());
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/AutoDisconnect.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import me.SaberAspect.SpectClient.client.setting.settings.NumberSetting;
8 | import net.minecraft.client.gui.GuiMainMenu;
9 |
10 | public class AutoDisconnect extends Module {
11 | public NumberSetting health = new NumberSetting("health", this, 10, 1, 30, 1);
12 |
13 |
14 | public AutoDisconnect() {
15 | super ("autoDisconnect", "automatically disconnects at desired health.", Keyboard.KEY_NONE, Category.PLAYER);
16 | this.addSettings(health);
17 | }
18 |
19 | public void onUpdate() {
20 | if (mc.player == null || mc.world == null) return;
21 | if (mc.player.getHealth() <= health.getValue()) {
22 | toggled = false;
23 | mc.world.sendQuittingDisconnectingPacket();
24 | mc.loadWorld(null);
25 | mc.displayGuiScreen(new GuiMainMenu());
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinBlockSlimeBlock.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.block.BlockSlime;
4 | import net.minecraft.entity.Entity;
5 | import net.minecraft.util.math.BlockPos;
6 | import net.minecraft.world.World;
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 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
13 | import me.SaberAspect.SpectClient.client.module.modules.movement.NoSlow;
14 |
15 | @Mixin(BlockSlime.class)
16 | public class MixinBlockSlimeBlock {
17 | @Inject(method = "onEntityWalk", at = @At("HEAD"), cancellable = true)
18 | private void onSteppedOn(World world, BlockPos pos, Entity entity, CallbackInfo info) {
19 | if (ModuleManager.isModuleEnabled("noSlow") && ((NoSlow)ModuleManager.getModuleByName("noSlow")).slimeBlock.isEnabled())
20 | info.cancel();
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/MixinLoader.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin;
2 |
3 | import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
4 | import org.spongepowered.asm.launch.MixinBootstrap;
5 | import org.spongepowered.asm.mixin.Mixins;
6 |
7 | import me.SaberAspect.Main;
8 |
9 | import javax.annotation.Nullable;
10 | import java.util.Map;
11 | public class MixinLoader implements IFMLLoadingPlugin {
12 |
13 | public MixinLoader(){
14 | Main.log.info("mixins initialized");
15 | MixinBootstrap.init();
16 | Mixins.addConfiguration("mixins.spectclient.json");
17 | }
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 | }
38 |
39 | @Override
40 | public String getAccessTransformerClass(){
41 | return null;
42 | }
43 | }
44 |
45 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/event/events/PlayerMoveEvent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.event.events;
2 |
3 | import me.SaberAspect.SpectClient.api.event.Event;
4 | import net.minecraft.entity.MoverType;
5 |
6 | public class PlayerMoveEvent extends Event {
7 |
8 | MoverType type;
9 | public double x;
10 | public double y;
11 | public double z;
12 |
13 | public PlayerMoveEvent(MoverType moverType, double x, double y, double z) {
14 | super();
15 | this.type = moverType;
16 | this.x = x;
17 | this.y = y;
18 | this.z = z;
19 | }
20 |
21 | public MoverType getType() {
22 | return this.type;
23 | }
24 |
25 | public void setType(MoverType type) {
26 | this.type = type;
27 | }
28 |
29 | public double getX() {
30 | return this.x;
31 | }
32 |
33 | public double getY() {
34 | return this.y;
35 | }
36 |
37 | public double getZ() {
38 | return this.z;
39 | }
40 |
41 | public void setX(double x) {
42 | this.x = x;
43 | }
44 |
45 | public void setY(double y) {
46 | this.y = y;
47 | }
48 |
49 | public void setZ(double z) {
50 | this.z = z;
51 | }
52 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/ui/clickgui/HudEditor.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.ui.clickgui;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.client.module.Category;
7 | import me.SaberAspect.SpectClient.client.module.Module;
8 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
9 |
10 | public class HudEditor extends Module {
11 | public BooleanSetting exitToClickGui = new BooleanSetting("exitToClickGui", this, true);
12 |
13 | public HudEditor() {
14 | super("hudEditor", "descrp", Keyboard.KEY_NONE, Category.HUD);
15 | this.addSettings(exitToClickGui);
16 | }
17 |
18 | public void onEnable() {
19 | Main.clickGui.enterHUDEditor();
20 | }
21 |
22 | public void onUpdate() {
23 |
24 | if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
25 | if(exitToClickGui.isEnabled()) {
26 | this.setToggled(false);
27 | Main.clickGui.enterGUI();
28 | }else {
29 | this.setToggled(false);
30 | }
31 | }
32 |
33 | }
34 |
35 | public void onDisable() {
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinRenderPlayer.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.entity.AbstractClientPlayer;
4 | import net.minecraft.client.renderer.entity.RenderPlayer;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
9 |
10 | import me.SaberAspect.Main;
11 | import me.SaberAspect.SpectClient.api.event.events.RenderEntityNameEvent;
12 |
13 | @Mixin(RenderPlayer.class)
14 | public class MixinRenderPlayer {
15 | @Inject(method = "renderEntityName", at = @At("HEAD"), cancellable = true)
16 | public void renderLivingLabel(AbstractClientPlayer entityIn, double x, double y, double z, String name, double distanceSq, CallbackInfo info) {
17 | RenderEntityNameEvent event = new RenderEntityNameEvent(entityIn, x, y, z, name, distanceSq);
18 | Main.EVENT_BUS.post(event);
19 | if (event.isCancelled())
20 | info.cancel();
21 | }
22 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/exploits/AntiSwing.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.exploits;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.PacketEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.zero.alpine.listener.EventHandler;
10 | import me.zero.alpine.listener.Listener;
11 | import net.minecraft.network.play.client.CPacketAnimation;
12 |
13 | public class AntiSwing extends Module {
14 |
15 | public AntiSwing() {
16 | super ("antiSwing", "prevents swinging your hand server side.", Keyboard.KEY_NONE, Category.EXPLOITS);
17 | }
18 |
19 | @EventHandler
20 | public Listener listener = new Listener<>(event -> {
21 | if (event.getPacket() instanceof CPacketAnimation) {
22 | event.cancel();
23 | }
24 | });
25 |
26 | public void onEnable() {
27 | Main.EVENT_BUS.subscribe(this);
28 | }
29 |
30 | public void onDisable() {
31 | Main.EVENT_BUS.unsubscribe(this);
32 | }
33 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 SaberAspect
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinBlockWeb.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.block.BlockWeb;
4 | import net.minecraft.block.state.IBlockState;
5 | import net.minecraft.entity.Entity;
6 | import net.minecraft.util.math.BlockPos;
7 | import net.minecraft.world.World;
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 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
14 | import me.SaberAspect.SpectClient.client.module.modules.movement.NoSlow;
15 |
16 | @Mixin(BlockWeb.class)
17 | public class MixinBlockWeb {
18 | @Inject(method = "onEntityCollision", at = @At("HEAD"), cancellable = true)
19 | private void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn, CallbackInfo info) {
20 | if (ModuleManager.isModuleEnabled("noSlow") && ((NoSlow)ModuleManager.getModuleByName("noSlow")).web.isEnabled())
21 | info.cancel();
22 | }
23 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinBlockSoulSand.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 | import net.minecraft.block.BlockSoulSand;
3 | import net.minecraft.block.state.IBlockState;
4 | import net.minecraft.entity.Entity;
5 | import net.minecraft.util.math.BlockPos;
6 | import net.minecraft.world.World;
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 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
13 | import me.SaberAspect.SpectClient.client.module.modules.movement.NoSlow;
14 |
15 | @Mixin(BlockSoulSand.class)
16 | public class MixinBlockSoulSand {
17 | @Inject(method = "onEntityCollision", at = @At("HEAD"), cancellable = true)
18 | public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, IBlockState state, Entity entityIn, CallbackInfo info) {
19 | if (ModuleManager.isModuleEnabled("noSlow") && ((NoSlow)ModuleManager.getModuleByName("noSlow")).soulSand.isEnabled())
20 | info.cancel();
21 | }
22 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/client/PayMe.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.client;
2 |
3 | import java.awt.Desktop;
4 | import java.net.URI;
5 |
6 | import org.lwjgl.input.Keyboard;
7 |
8 | import me.SaberAspect.SpectClient.client.module.Category;
9 | import me.SaberAspect.SpectClient.client.module.Module;
10 | import me.SaberAspect.SpectClient.client.setting.settings.ModeSetting;
11 |
12 | public class PayMe extends Module {
13 | public ModeSetting dupeMode = new ModeSetting("mode", this, "donate", "donate", "github");
14 |
15 | public PayMe() {
16 | super("PayMe", "DO IT!", Keyboard.KEY_NONE, Category.CLIENT);
17 | this.addSettings(dupeMode);
18 | }
19 |
20 | public void onEnable() {
21 | if(dupeMode.is("donate")) {
22 | try {
23 | Desktop.getDesktop().browse(URI.create("https://www.paypal.com/biz/fund?id=4A9XUTEQMVUZG"));
24 | } catch (Exception e) {}
25 | }
26 | if(dupeMode.is("github")) {
27 | try {
28 | Desktop.getDesktop().browse(URI.create("https://github.com/SaberAspect/SpectClient"));
29 | } catch (Exception e) {}
30 | }
31 |
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/font/FontUtils.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.font;
2 |
3 | import me.SaberAspect.Main;
4 | import me.SaberAspect.SpectClient.api.util.render.JColor;
5 | import net.minecraft.client.Minecraft;
6 |
7 | public class FontUtils {
8 |
9 | private static final Minecraft mc = Minecraft.getMinecraft();
10 |
11 | public static float drawStringWithShadow(boolean customFont, String text, int x, int y, JColor color) {
12 | if(customFont) {
13 | return Main.customFontRenderer.drawStringWithShadow(text, x, y, color);
14 | }
15 | else {
16 | return mc.fontRenderer.drawStringWithShadow(text, x, y, color.getRGB());
17 | }
18 | }
19 |
20 | public static int getStringWidth(boolean customFont, String string) {
21 | if (customFont) {
22 | return Main.customFontRenderer.getStringWidth(string);
23 | }
24 | else {
25 | return mc.fontRenderer.getStringWidth(string);
26 | }
27 | }
28 |
29 | public static int getFontHeight(boolean customFont) {
30 | if (customFont) {
31 | return Main.customFontRenderer.getHeight();
32 | }
33 | else {
34 | return mc.fontRenderer.FONT_HEIGHT;
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/movement/Sprint.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.movement;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import me.SaberAspect.SpectClient.client.setting.settings.ModeSetting;
8 | import net.minecraft.client.Minecraft;
9 |
10 | public class Sprint extends Module {
11 | public ModeSetting mode = new ModeSetting("mode", this, "normal", "normal", "sickomode");
12 |
13 | private Minecraft mc = Minecraft.getMinecraft();
14 | public boolean on;
15 |
16 | public Sprint() {
17 | super ("sprint", "now u cant walk, good going.", Keyboard.KEY_NONE, Category.MOVEMENT);
18 | this.addSettings(mode);
19 | }
20 |
21 | @Override
22 | public void onUpdate() {
23 | if(mode.is("normal")) {
24 | if(mc.player.movementInput.moveForward > 0 && !mc.player.isSneaking() && !mc.player.collidedHorizontally) {
25 | mc.player.setSprinting(true);
26 | }
27 | }else if(mode.is("sickomode")) {
28 | mc.player.setSprinting(true);
29 |
30 | }
31 | }
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/exploits/PortalGodMode.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.exploits;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.PacketEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.zero.alpine.listener.EventHandler;
10 | import me.zero.alpine.listener.Listener;
11 | import net.minecraft.network.play.client.CPacketConfirmTeleport;
12 |
13 | public class PortalGodMode extends Module {
14 |
15 | public PortalGodMode() {
16 | super ("portalGodMode", "cancels the CPacketConfimTelepoort event.", Keyboard.KEY_NONE, Category.EXPLOITS);
17 | }
18 |
19 | public void onEnable() {
20 | Main.EVENT_BUS.subscribe(this);
21 | }
22 |
23 | public void onDisable() {
24 | Main.EVENT_BUS.unsubscribe(this);
25 | }
26 |
27 | @EventHandler
28 | private final Listener listener = new Listener<>(event -> {
29 | if (event.getPacket() instanceof CPacketConfirmTeleport) {
30 | event.cancel();
31 | }
32 | });
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/Login/ChatUtils.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.Login;
2 |
3 | import me.SaberAspect.Reference;
4 | import me.SaberAspect.SpectClient.api.util.Wrapper;
5 | import net.minecraft.util.text.ITextComponent;
6 | import net.minecraft.util.text.TextComponentTranslation;
7 |
8 | public class ChatUtils{ // TODO Rewrite to LogManager
9 |
10 | public static void component(ITextComponent component)
11 | {
12 | if(Wrapper.getPlayer() == null || Wrapper.getMinecraft().ingameGUI.getChatGUI() == null)
13 | return;
14 | Wrapper.getMinecraft().ingameGUI.getChatGUI()
15 | .printChatMessage(new TextComponentTranslation("")
16 | .appendSibling(component));
17 | }
18 |
19 | public static void message(Object message)
20 | {
21 | component(new TextComponentTranslation("\u00a78" + Reference.NAME + "\u00a77 " + message));
22 | }
23 |
24 | public static void warning(Object message)
25 | {
26 | message("\u00a78[\u00a7eWARNING\u00a78]\u00a7e " + message);
27 | }
28 |
29 | public static void error(Object message)
30 | {
31 | message("\u00a78[\u00a74ERROR\u00a78]\u00a7c " + message);
32 | }
33 | }
34 |
35 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/setting/settings/BooleanSetting.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.setting.settings;
2 |
3 | import com.lukflug.panelstudio.settings.Toggleable;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import me.SaberAspect.SpectClient.client.setting.Setting;
8 |
9 | /*
10 | * Written by @SrgantMooMoo on 11/17/20.
11 | */
12 |
13 | public class BooleanSetting extends Setting implements Toggleable {
14 | public boolean enabled;
15 |
16 | public BooleanSetting(String name, Module parent, boolean enabled) {
17 | this.name = name;
18 | this.parent = parent;
19 | this.enabled = enabled;
20 | }
21 |
22 | public boolean isEnabled() {
23 | return this.enabled;
24 | }
25 |
26 | public void setEnabled(boolean enabled) {
27 | this.enabled = enabled;
28 |
29 | if(Main.saveLoad != null) {
30 | Main.saveLoad.save();
31 | }
32 | }
33 |
34 | public void toggle() {
35 | this.enabled = !this.enabled;
36 |
37 | if(Main.saveLoad != null) {
38 | Main.saveLoad.save();
39 | }
40 | }
41 |
42 | @Override
43 | public boolean isOn() {
44 | return this.isEnabled();
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/setting/settings/KeybindSetting.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.setting.settings;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import com.lukflug.panelstudio.theme.Renderer;
6 |
7 | import me.SaberAspect.SpectClient.client.module.Module;
8 | import me.SaberAspect.SpectClient.client.setting.Setting;
9 |
10 | /*
11 | * Written by @SrgantMooMoo on 11/17/20.
12 | */
13 |
14 | public class KeybindSetting extends Setting implements com.lukflug.panelstudio.settings.KeybindSetting {
15 |
16 | public int code;
17 |
18 | public KeybindSetting(int code) {
19 | this.name = "KeyBind";
20 | this.code = code;
21 | }
22 |
23 | public KeybindSetting(Renderer componentRenderer, Module module) {
24 | // TODO Auto-generated constructor stub
25 | }
26 |
27 | public int getKeyCode() {
28 | return this.code;
29 | }
30 |
31 | public void setKeyCode(int code) {
32 | this.code = code;
33 | }
34 |
35 | @Override
36 | public int getKey() {
37 | return code;
38 | }
39 |
40 | @Override
41 | public String getKeyName() {
42 | return Keyboard.getKeyName(code);
43 | }
44 |
45 | @Override
46 | public void setKey(int key) {
47 | code=key;
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinItemRenderer.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import org.spongepowered.asm.mixin.Mixin;
4 | import org.spongepowered.asm.mixin.injection.Inject;
5 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
6 | import org.spongepowered.asm.mixin.injection.At;
7 |
8 | import me.SaberAspect.Main;
9 | import me.SaberAspect.SpectClient.api.event.events.TransformSideFirstPersonEvent;
10 | import net.minecraft.client.renderer.ItemRenderer;
11 | import net.minecraft.util.EnumHandSide;
12 |
13 | @Mixin(ItemRenderer.class)
14 | public class MixinItemRenderer {
15 |
16 | @Inject(method = "transformSideFirstPerson", at = @At("HEAD"))
17 | public void transformSideFirstPerson(EnumHandSide hand, float p_187459_2_, CallbackInfo callbackInfo) {
18 | TransformSideFirstPersonEvent event = new TransformSideFirstPersonEvent(hand);
19 | Main.EVENT_BUS.post(event);
20 | }
21 |
22 | @Inject(method = "transformFirstPerson", at = @At("HEAD"))
23 | public void transformFirstPerson(EnumHandSide hand, float p_187453_2_, CallbackInfo callbackInfo) {
24 | TransformSideFirstPersonEvent event = new TransformSideFirstPersonEvent(hand);
25 | Main.EVENT_BUS.post(event);
26 | }
27 |
28 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/exploits/Timer.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.exploits;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import me.SaberAspect.SpectClient.client.setting.settings.NumberSetting;
8 | import net.minecraftforge.common.MinecraftForge;
9 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
10 | import net.minecraftforge.fml.common.gameevent.TickEvent;
11 |
12 | public class Timer extends Module {
13 | public NumberSetting speed = new NumberSetting("speed", this, 20, 1, 300, 1);
14 |
15 | public Timer() {
16 | super ("timer", "changes the player timer.", Keyboard.KEY_NONE, Category.EXPLOITS);
17 | this.addSettings(speed);
18 | }
19 |
20 | @SubscribeEvent
21 | public void onTick(final TickEvent.ClientTickEvent event) {
22 | mc.timer.tickLength = (float) (50f / (speed.getValue() / 10f));
23 | }
24 |
25 | @Override
26 | public void onEnable() {
27 | MinecraftForge.EVENT_BUS.register(this);
28 | }
29 |
30 | @Override
31 | public void onDisable() {
32 | mc.timer.tickLength = 50f;
33 | MinecraftForge.EVENT_BUS.unregister(this);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinGuiPlayerTabOverlay.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.gui.GuiPlayerTabOverlay;
4 | import net.minecraft.client.network.NetworkPlayerInfo;
5 | import net.minecraft.scoreboard.ScorePlayerTeam;
6 | import org.spongepowered.asm.mixin.Mixin;
7 | import org.spongepowered.asm.mixin.injection.At;
8 | import org.spongepowered.asm.mixin.injection.Inject;
9 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
10 |
11 | @Mixin(GuiPlayerTabOverlay.class)
12 | public class MixinGuiPlayerTabOverlay{
13 |
14 | @Inject(method = "getPlayerName", at = @At("HEAD"), cancellable = true)
15 | public void getPlayerName(NetworkPlayerInfo networkPlayerInfoIn, CallbackInfoReturnable returnable){
16 | returnable.cancel();
17 | returnable.setReturnValue(getPlayerName(networkPlayerInfoIn));
18 | }
19 |
20 | public String getPlayerName(NetworkPlayerInfo networkPlayerInfoIn){
21 | String dname = networkPlayerInfoIn.getDisplayName() != null ? networkPlayerInfoIn.getDisplayName().getFormattedText() : ScorePlayerTeam.formatPlayerName(networkPlayerInfoIn.getPlayerTeam(), networkPlayerInfoIn.getGameProfile().getName());
22 | return dname;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/movement/ReverseStep.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.movement;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import me.SaberAspect.SpectClient.client.setting.settings.NumberSetting;
8 |
9 | public class ReverseStep extends Module {
10 | public NumberSetting height = new NumberSetting("height", this, 2.5, 0.5, 10, 0.5);
11 |
12 | public ReverseStep() {
13 | super ("reverseStep", "sucks u down when going down a block.", Keyboard.KEY_NONE, Category.MOVEMENT);
14 | }
15 |
16 | public void onUpdate() {
17 | if (mc.world == null || mc.player == null || mc.player.isInWater() || mc.player.isInLava() || mc.player.isOnLadder() || mc.gameSettings.keyBindJump.isKeyDown()) {
18 | return;
19 | }
20 |
21 | if (mc.player != null && mc.player.onGround && !mc.player.isInWater() && !mc.player.isOnLadder()) {
22 | for (double y = 0.0; y < this.height.getValue() + 0.5; y += 0.01) {
23 | if (!mc.world.getCollisionBoxes(mc.player, mc.player.getEntityBoundingBox().offset(0.0, -y, 0.0)).isEmpty()) {
24 | mc.player.motionY = -10.0;
25 | break;
26 | }
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/pvp/AutoClicker.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.pvp;
2 |
3 | import org.lwjgl.input.Keyboard;
4 | import org.lwjgl.input.Mouse;
5 |
6 | import me.SaberAspect.SpectClient.client.module.Category;
7 | import me.SaberAspect.SpectClient.client.module.Module;
8 | import net.minecraft.client.settings.KeyBinding;
9 |
10 | public class AutoClicker extends Module {
11 |
12 | private long lastClick;
13 | private long hold;
14 |
15 | private double speed;
16 | private double holdLength;
17 |
18 | public AutoClicker() {
19 | super ("autoClicker", "clicks fast when holding down left click.", Keyboard.KEY_NONE, Category.PVP);
20 | }
21 |
22 | public void onUpdate() {
23 | if(Mouse.isButtonDown(0)) {
24 | if(System.currentTimeMillis() - lastClick > speed * 1000) {
25 | lastClick = System.currentTimeMillis();
26 | if(hold < lastClick) {
27 | hold = lastClick;
28 | }
29 | int key = mc.gameSettings.keyBindAttack.getKeyCode();
30 | KeyBinding.setKeyBindState(key, true);
31 | KeyBinding.onTick(key);
32 | } else if (System.currentTimeMillis() - hold > holdLength * 1000) {
33 | KeyBinding.setKeyBindState(mc.gameSettings.keyBindAttack.getKeyCode(), false);
34 | }
35 | }
36 | }
37 |
38 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/command/Command.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.command;
2 |
3 | import java.util.ArrayList;
4 | import java.util.Arrays;
5 | import java.util.List;
6 |
7 | public abstract class Command {
8 | public String name, description, syntax;
9 | public List aliases = new ArrayList();
10 |
11 | public Command(String name, String description, String syntax, String... aliases) {
12 | this.name = name;
13 | this.description = description;
14 | this.syntax = syntax;
15 | this.aliases = Arrays.asList(aliases);
16 | }
17 |
18 | public abstract void onCommand(String[] args, String command);
19 |
20 | public String getName() {
21 | return name;
22 | }
23 |
24 | public void setName(String name) {
25 | this.name = name;
26 | }
27 |
28 | public String getDescription() {
29 | return description;
30 | }
31 |
32 | public void setDescription(String description) {
33 | this.description = description;
34 | }
35 |
36 | public String getSyntax() {
37 | return syntax;
38 | }
39 |
40 | public void setSyntax(String syntax) {
41 | this.syntax = syntax;
42 | }
43 |
44 | public List getAliases() {
45 | return aliases;
46 | }
47 |
48 | public void setAliases(List aliases) {
49 | this.aliases = aliases;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/movement/GuiMove.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.movement;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import net.minecraft.client.Minecraft;
8 | import net.minecraft.client.gui.GuiChat;
9 | public class GuiMove extends Module {
10 |
11 | public GuiMove() {
12 | super ("guiMove", "lets you move while in the a gui screen.", Keyboard.KEY_NONE, Category.MOVEMENT);
13 | }
14 |
15 | private Minecraft mc = Minecraft.getMinecraft();
16 |
17 | public void onUpdate(){
18 | if (mc.currentScreen != null){
19 | if (!(mc.currentScreen instanceof GuiChat)){
20 | if (Keyboard.isKeyDown(200)){
21 | mc.player.rotationPitch -= 5;
22 | }
23 | if (Keyboard.isKeyDown(208)){
24 | mc.player.rotationPitch += 5;
25 | }
26 | if (Keyboard.isKeyDown(205)){
27 | mc.player.rotationYaw += 5;
28 | }
29 | if (Keyboard.isKeyDown(203)){
30 | mc.player.rotationYaw -= 5;
31 | }
32 | if (mc.player.rotationPitch > 90){
33 | mc.player.rotationPitch = 90;
34 | }
35 | if (mc.player.rotationPitch < -90){
36 | mc.player.rotationPitch = -90;
37 | }
38 | }
39 | }
40 | }
41 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/NoFall.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.NetworkPacketEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.zero.alpine.listener.EventHandler;
10 | import me.zero.alpine.listener.Listener;
11 | import net.minecraft.client.Minecraft;
12 | import net.minecraft.network.play.client.CPacketPlayer;
13 |
14 | public class NoFall extends Module {
15 |
16 | public NoFall() {
17 | super ("noFall", "yea no... fall.", Keyboard.KEY_NONE, Category.PLAYER);
18 | }
19 |
20 | public void onEnable() {
21 | Main.EVENT_BUS.subscribe(this);
22 | }
23 |
24 | public void onDisable() {
25 | Main.EVENT_BUS.unsubscribe(this);
26 | }
27 |
28 | @EventHandler
29 | private final Listener listener = new Listener<>(event -> {
30 | if (event.getPacket() instanceof CPacketPlayer) {
31 | final CPacketPlayer packet = (CPacketPlayer) event.getPacket();
32 | if (event.getPacket() instanceof CPacketPlayer && Minecraft.getMinecraft().player.fallDistance >= 3.0f) {
33 | packet.onGround = true;
34 | }
35 | }
36 | });
37 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/render/World.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.render;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.client.module.Category;
7 | import me.SaberAspect.SpectClient.client.module.Module;
8 | import me.SaberAspect.SpectClient.client.setting.settings.ModeSetting;
9 | import me.SaberAspect.SpectClient.client.setting.settings.NumberSetting;
10 |
11 | public class World extends Module {
12 | public ModeSetting weather = new ModeSetting("weather", this, "clear", "clear", "rain", "thunderStorm");
13 | public NumberSetting time = new NumberSetting("time", this, 0.0D, 0.0D, 24000.0D, 1.0D);
14 |
15 | public World() {
16 | super("world", "change world shit.", Keyboard.KEY_NONE, Category.RENDER);
17 | this.addSettings(weather, time);
18 | }
19 |
20 | public void onEnable() {
21 | Main.EVENT_BUS.subscribe(this);
22 | }
23 |
24 | public void onDisable() {
25 | Main.EVENT_BUS.unsubscribe(this);
26 | }
27 |
28 | public void onUpdate() {
29 | // timeOfDay
30 | mc.world.setWorldTime((long) time.getValue());
31 |
32 | // weather
33 | if(weather.is("clear")) mc.world.setRainStrength(0);
34 | if(weather.is("rain")) mc.world.setRainStrength(1);
35 | if(weather.is("thunderStorm")) mc.world.setRainStrength(2);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/command/commands/Toggle.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.command.commands;
2 |
3 | import com.mojang.realmsclient.gui.ChatFormatting;
4 |
5 | import me.SaberAspect.SpectClient.client.command.Command;
6 | import me.SaberAspect.SpectClient.client.command.CommandManager;
7 | import me.SaberAspect.SpectClient.client.module.Module;
8 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
9 |
10 | public class Toggle extends Command {
11 |
12 | public Toggle() {
13 | super("toggle", "toggles a module on or off.", "toggle ", "t");
14 | }
15 |
16 | @Override
17 | public void onCommand(String[] args, String command) {
18 | if(args.length > 0) {
19 | String moduleName = args[0];
20 | boolean moduleFound = false;
21 | for(Module module : ModuleManager.modules) {
22 | if(module.name.equalsIgnoreCase(moduleName)) {
23 | module.toggle();
24 | ModuleManager.addChatMessage(module.name + " " + (module.isToggled() ? ChatFormatting.GREEN + "enabled" + ChatFormatting.GRAY + "." : ChatFormatting.RED + "disabled" + ChatFormatting.GRAY + "."));
25 | moduleFound = true;
26 | break;
27 | }
28 | }
29 | if(!moduleFound) {
30 | ModuleManager.addChatMessage(ChatFormatting.DARK_RED + "module not found.");
31 | }
32 | }else CommandManager.correctUsageMsg("", getName(), getSyntax());
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/InventoryPlus.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.PacketEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.zero.alpine.listener.EventHandler;
10 | import me.zero.alpine.listener.Listener;
11 | import net.minecraft.client.Minecraft;
12 | import net.minecraft.network.play.client.CPacketCloseWindow;
13 |
14 | public class InventoryPlus extends Module {
15 |
16 | public InventoryPlus() {
17 | super ("inventoryPlus", "lets you hold extra items in your crafting gui.", Keyboard.KEY_NONE, Category.PLAYER);
18 | }
19 |
20 | public void onEnable() {
21 | Main.EVENT_BUS.subscribe(this);
22 | }
23 |
24 | public void onDisable() {
25 | Main.EVENT_BUS.unsubscribe(this);
26 | }
27 |
28 | @EventHandler
29 | private final Listener listener = new Listener<>(event -> {
30 | if (event.getPacket() instanceof CPacketCloseWindow) {
31 | final CPacketCloseWindow packet = (CPacketCloseWindow) event.getPacket();
32 | if (packet.windowId == Minecraft.getMinecraft().player.inventoryContainer.windowId) {
33 | event.cancel();
34 | }
35 | }
36 | });
37 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinAbstractClientPlayer.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.entity.AbstractClientPlayer;
4 | import net.minecraft.client.network.NetworkPlayerInfo;
5 | import net.minecraft.util.ResourceLocation;
6 | import org.spongepowered.asm.mixin.Mixin;
7 | import org.spongepowered.asm.mixin.Shadow;
8 | import org.spongepowered.asm.mixin.injection.At;
9 | import org.spongepowered.asm.mixin.injection.Inject;
10 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
11 |
12 | import me.SaberAspect.Main;
13 | import me.SaberAspect.Reference;
14 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
15 |
16 | import java.util.UUID;
17 |
18 | import javax.annotation.Nullable;
19 |
20 | @Mixin(AbstractClientPlayer.class)
21 | public abstract class MixinAbstractClientPlayer {
22 |
23 | @Shadow @Nullable protected abstract NetworkPlayerInfo getPlayerInfo();
24 |
25 | @Inject(method = "getLocationCape", at = @At("HEAD"), cancellable = true)
26 | public void getLocationCape(CallbackInfoReturnable callbackInfoReturnable) {
27 | UUID uuid = getPlayerInfo().getGameProfile().getId();
28 | if (ModuleManager.isModuleEnabled("capes") && Main.cape.hasCape(uuid)) {
29 | callbackInfoReturnable.setReturnValue(new ResourceLocation(Reference.MOD_ID, "textures/spectclient-cape.png"));
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/friend/FriendManager.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.friend;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | import me.SaberAspect.Main;
7 |
8 | public class FriendManager {
9 |
10 | public static List friends;
11 |
12 | public FriendManager(){
13 | friends = new ArrayList<>();
14 | }
15 |
16 | public static List getFriendsByName() {
17 | ArrayList friendsName = new ArrayList<>();
18 | friends.forEach(friend -> friendsName.add(friend.getName()));
19 |
20 | return friendsName;
21 | }
22 |
23 | public static boolean isFriend(String name) {
24 | boolean b = false;
25 | for (Friend f : friends) {
26 | if (f.getName().equalsIgnoreCase(name)) {
27 | b = true;
28 | break;
29 | }
30 | }
31 |
32 | return b;
33 | }
34 |
35 | public static Friend getFriendByName(String name) {
36 | Friend fr = null;
37 | for (Friend f : friends) {
38 | if (f.getName().equalsIgnoreCase(name)) {
39 | fr = f;
40 | }
41 | }
42 |
43 | return fr;
44 | }
45 |
46 | public static void addFriend(String name) {
47 | friends.add(new Friend(name));
48 |
49 | if(Main.saveLoad != null) {
50 | Main.saveLoad.save();
51 | }
52 | }
53 |
54 | public static void removeFriend(String name) {
55 | friends.remove(getFriendByName(name));
56 | }
57 |
58 | public static void clearFriends() {
59 | friends.clear();
60 | }
61 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/render/FullBright.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.render;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.PlayerUpdateEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.zero.alpine.listener.EventHandler;
10 | import me.zero.alpine.listener.Listener;
11 | import net.minecraft.init.MobEffects;
12 |
13 | /*
14 | * Written by @SrgantMooMoo on 11/17/20.
15 | * Rewritten by @SrgantMooMoo on 1/4/21.
16 | */
17 |
18 | public class FullBright extends Module {
19 |
20 | public FullBright() {
21 | super ("fullBright", "makes everything fully bright.", Keyboard.KEY_NONE, Category.RENDER);
22 | }
23 | private float lastGamma;
24 |
25 | @Override
26 | public void onEnable() {
27 | Main.EVENT_BUS.subscribe(this);
28 |
29 | lastGamma = mc.gameSettings.gammaSetting;
30 | }
31 |
32 | @Override
33 | public void onDisable() {
34 | Main.EVENT_BUS.unsubscribe(this);
35 |
36 | mc.gameSettings.gammaSetting = this.lastGamma;
37 | }
38 |
39 | @EventHandler
40 | private Listener OnPlayerUpdate = new Listener<>(p_Event -> {
41 | mc.gameSettings.gammaSetting = 1000;
42 | mc.player.removePotionEffect(MobEffects.NIGHT_VISION);
43 | });
44 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/setting/SettingManager.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.setting;
2 |
3 | import java.util.ArrayList;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Module;
6 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
7 |
8 | /*
9 | * Written originally by @HeroCode.
10 | * Edited by @SrgantMooMoo on 11/17/20 with inspiration taken from @Sebsb.
11 | */
12 |
13 | public class SettingManager {
14 |
15 | private ArrayList settings;
16 |
17 | public SettingManager(){
18 | this.settings = new ArrayList();
19 | }
20 |
21 | public void rSetting(Setting in){
22 | this.settings.add(in);
23 | }
24 |
25 | public ArrayList getSettings() {
26 | return this.settings;
27 | }
28 |
29 | public ArrayList getSettingsByMod(Module mod) {
30 | ArrayList out = new ArrayList();
31 | for(Setting s : getSettings()) {
32 | if(s.parent.equals(mod)) {
33 | out.add(s);
34 | }
35 | }
36 | if(out.isEmpty()) {
37 | return null;
38 | }
39 | return out;
40 | }
41 |
42 | public Setting getSettingByName(Module mod, String name) {
43 | for (Module m : ModuleManager.modules) {
44 | for (Setting set : m.settings) {
45 | if (set.name.equalsIgnoreCase(name) && set.parent == mod) {
46 | return set;
47 | }
48 | }
49 | }
50 | System.err.println("[SpectClient] Error Setting NOT found: '" + name +"'!");
51 | return null;
52 | }
53 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/command/commands/Login.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.command.commands;
2 |
3 | import me.SaberAspect.SpectClient.api.util.Wrapper;
4 | import me.SaberAspect.SpectClient.api.util.Login.ChatUtils;
5 | import me.SaberAspect.SpectClient.api.util.Login.LoginUtils;
6 | import me.SaberAspect.SpectClient.client.command.Command;
7 |
8 | public class Login extends Command{
9 |
10 | public Login() {
11 | super("Login", "Allows you to login to your profile (for devs)", "login", "Log");
12 | }
13 |
14 | @Override
15 | public void onCommand(String[] args, String command) {
16 | {
17 | try
18 | {
19 | if(args.length > 1 || args[0].contains(":")) {
20 | String email = "";
21 | String password = "";
22 | if(args[0].contains(":")) {
23 | String[] split = args[0].split(":", 2);
24 | email = split[0];
25 | password = split[1];
26 | }
27 | else
28 | {
29 | email = args[0];
30 | password = args[1];
31 | }
32 | String log = LoginUtils.loginAlt(email, password);
33 | ChatUtils.warning(log);
34 | }
35 | else
36 | {
37 | LoginUtils.changeCrackedName(args[0]);
38 | ChatUtils.warning("Logged [Cracked]: " + Wrapper.getMinecraft().getSession().getUsername());
39 | }
40 | }
41 | catch(Exception e)
42 | {
43 | ChatUtils.error("Usage: " + getSyntax());
44 | }
45 | }
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinEntityPlayer.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.Minecraft;
4 | import net.minecraft.entity.player.EntityPlayer;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.Shadow;
7 | import org.spongepowered.asm.mixin.injection.At;
8 | import org.spongepowered.asm.mixin.injection.Inject;
9 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
10 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
11 |
12 | import me.SaberAspect.Main;
13 | import me.SaberAspect.SpectClient.api.event.events.PlayerJumpEvent;
14 | import me.SaberAspect.SpectClient.api.event.events.WaterPushEvent;
15 |
16 | @Mixin(EntityPlayer.class)
17 | public abstract class MixinEntityPlayer {
18 |
19 | @Shadow public abstract String getName();
20 |
21 | @Inject(method = "jump", at = @At("HEAD"), cancellable = true)
22 | public void onJump(CallbackInfo callbackInfo) {
23 | if (Minecraft.getMinecraft().player.getName() == this.getName()) {
24 | Main.EVENT_BUS.post(new PlayerJumpEvent());
25 | }
26 | }
27 |
28 | @Inject(method = "isPushedByWater", at = @At("HEAD"), cancellable = true)
29 | private void onPushedByWater(CallbackInfoReturnable callbackInfoReturnable) {
30 | WaterPushEvent event = new WaterPushEvent();
31 | Main.EVENT_BUS.post(event);
32 | if (event.isCancelled()) {
33 | callbackInfoReturnable.setReturnValue(false);
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/pvp/FootExp.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.pvp;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.PacketEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.zero.alpine.listener.EventHandler;
10 | import me.zero.alpine.listener.Listener;
11 | import net.minecraft.item.ItemExpBottle;
12 | import net.minecraft.network.play.client.CPacketPlayer;
13 | import net.minecraft.network.play.client.CPacketPlayerTryUseItem;
14 |
15 | /*
16 | * I originally got this idea from olliem5, it was done in his "past" client. not sure where he got it, but that's where i got it :)
17 | */
18 |
19 | public class FootExp extends Module {
20 |
21 | public FootExp() {
22 | super ("footExp", "automatically throws xp bottles downwards.", Keyboard.KEY_NONE, Category.PVP);
23 | }
24 |
25 | public void onEnable() {
26 | Main.EVENT_BUS.subscribe(this);
27 | }
28 |
29 | public void onDisable() {
30 | Main.EVENT_BUS.unsubscribe(this);
31 | }
32 |
33 | @EventHandler
34 | public Listener listener = new Listener<>(event -> {
35 | if(event.getPacket() instanceof CPacketPlayerTryUseItem && mc.player.getHeldItemMainhand().getItem() instanceof ItemExpBottle) {
36 | mc.player.connection.sendPacket(new CPacketPlayer.Rotation(mc.player.rotationYaw, 90.0f, mc.player.onGround));
37 | }
38 | });
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/misc/Discord.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.misc;
2 |
3 | import club.minnced.discord.rpc.DiscordEventHandlers;
4 | import club.minnced.discord.rpc.DiscordRPC;
5 | import club.minnced.discord.rpc.DiscordRichPresence;
6 | import me.SaberAspect.Reference;
7 | import net.minecraft.client.Minecraft;
8 |
9 | public class Discord {
10 |
11 | private static String discordID = "810045143142367262";
12 | private static DiscordRichPresence discordRichPresence = new DiscordRichPresence();
13 | private static DiscordRPC discordRPC = DiscordRPC.INSTANCE;
14 |
15 | public static void startRPC(){
16 | DiscordEventHandlers eventHandlers = new DiscordEventHandlers();
17 | eventHandlers.disconnected = ((var1, var2) -> System.out.println("Discord RPC disconnected, var1: " + var1 + ", var2: " + var2));
18 |
19 | discordRPC.Discord_Initialize(discordID, eventHandlers, true, null);
20 |
21 | discordRichPresence.startTimestamp = System.currentTimeMillis() / 1000L;
22 | discordRichPresence.details = Minecraft.getMinecraft().player.getName();
23 | discordRichPresence.largeImageKey = "large";
24 | discordRichPresence.largeImageText = "Spect Gang Rise Up";
25 | discordRichPresence.state = "im on version " + Reference.VERSION + "!";
26 | discordRPC.Discord_UpdatePresence(discordRichPresence);
27 | }
28 |
29 | public static void stopRPC(){
30 | discordRPC.Discord_Shutdown();
31 | discordRPC.Discord_ClearPresence();
32 | }
33 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/render/JColor.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.render;
2 |
3 | import java.awt.Color;
4 |
5 | import net.minecraft.client.renderer.GlStateManager;
6 |
7 | /**
8 | * @author lukflug
9 | */
10 |
11 | // this is taken from gs from a while ago lol - SrgantMooMoo
12 |
13 | public class JColor extends Color {
14 |
15 | private static final long serialVersionUID = 1L;
16 |
17 | public JColor (int rgb) {
18 | super(rgb);
19 | }
20 |
21 | public JColor (int rgba, boolean hasalpha) {
22 | super(rgba,hasalpha);
23 | }
24 |
25 | public JColor (int r, int g, int b) {
26 | super(r,g,b);
27 | }
28 |
29 | public JColor (int r, int g, int b, int a) {
30 | super(r,g,b,a);
31 | }
32 |
33 | public JColor (Color color) {
34 | super(color.getRed(),color.getGreen(),color.getBlue(),color.getAlpha());
35 | }
36 |
37 | public JColor (JColor color, int a) {
38 | super(color.getRed(),color.getGreen(),color.getBlue(),a);
39 | }
40 |
41 | public static JColor fromHSB (float hue, float saturation, float brightness) {
42 | return new JColor(Color.getHSBColor(hue,saturation,brightness));
43 | }
44 |
45 | public float getHue() {
46 | return RGBtoHSB(getRed(),getGreen(),getBlue(),null)[0];
47 | }
48 |
49 | public float getSaturation() {
50 | return RGBtoHSB(getRed(),getGreen(),getBlue(),null)[1];
51 | }
52 |
53 | public float getBrightness() {
54 | return RGBtoHSB(getRed(),getGreen(),getBlue(),null)[2];
55 | }
56 |
57 | public void glColor() {
58 | GlStateManager.color(getRed()/255.0f,getGreen()/255.0f,getBlue()/255.0f,getAlpha()/255.0f);
59 | }
60 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinGuiMainMenu.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import org.spongepowered.asm.mixin.Mixin;
4 | import org.spongepowered.asm.mixin.injection.At;
5 | import org.spongepowered.asm.mixin.injection.Inject;
6 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
7 |
8 | import me.SaberAspect.Reference;
9 | import me.SaberAspect.SpectClient.api.util.Wrapper;
10 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
11 | import net.minecraft.client.gui.FontRenderer;
12 | import net.minecraft.client.gui.GuiMainMenu;
13 | import net.minecraft.client.gui.GuiScreen;
14 | import net.minecraft.client.gui.ScaledResolution;
15 | import net.minecraft.util.text.TextFormatting;
16 |
17 | @Mixin({GuiMainMenu.class})
18 | public class MixinGuiMainMenu extends GuiScreen {
19 | @Inject(method = {"drawScreen"}, at = {@At("TAIL")}, cancellable = true)
20 | public void drawText(int mouseX, int mouseY, float partialTicks, CallbackInfo ci) {
21 | if(ModuleManager.getModuleByName("mainMenuWatermark").isToggled()) {
22 | ScaledResolution sr = new ScaledResolution(Wrapper.getMinecraft());
23 | FontRenderer fr = mc.fontRenderer;
24 | fr.drawStringWithShadow(TextFormatting.ITALIC + Reference.NAME + TextFormatting.WHITE + " by" + TextFormatting.GRAY + "" + TextFormatting.ITALIC + " SaberAspect", 2, 2, 0xff0000);
25 | fr.drawStringWithShadow(TextFormatting.WHITE + "ur on version " + TextFormatting.BLUE + TextFormatting.ITALIC + Reference.VERSION + TextFormatting.RESET + TextFormatting.WHITE + "!", sr.getScaledWidth() - 100, 2, 0xff79c2ec);
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/movement/NoSlow.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.movement;
2 | import org.lwjgl.input.Keyboard;
3 |
4 | import me.SaberAspect.Main;
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
8 | import me.zero.alpine.listener.EventHandler;
9 | import me.zero.alpine.listener.Listener;
10 | import net.minecraft.init.Blocks;
11 | import net.minecraftforge.client.event.InputUpdateEvent;
12 |
13 | public class NoSlow extends Module {
14 | public BooleanSetting food = new BooleanSetting("food", this, true);
15 | public BooleanSetting web = new BooleanSetting("web", this, true);
16 | public BooleanSetting soulSand = new BooleanSetting("soulSand", this, true);
17 | public BooleanSetting slimeBlock = new BooleanSetting("slimeBlock", this, true);
18 |
19 | public NoSlow() {
20 | super ("noSlow", "slow? no.", Keyboard.KEY_NONE, Category.MOVEMENT);
21 | this.addSettings(food, web, soulSand, slimeBlock);
22 | }
23 |
24 | public void onEnable() {
25 | Main.EVENT_BUS.subscribe(this);
26 | Blocks.DIRT.setLightOpacity(10);
27 | }
28 |
29 | public void onDisable() {
30 | Main.EVENT_BUS.unsubscribe(this);
31 | }
32 |
33 | @EventHandler
34 | private final Listener eventListener = new Listener<>(event -> {
35 | if (mc.player.isHandActive() && !mc.player.isRiding() && food.isEnabled()) {
36 | event.getMovementInput().moveStrafe *= 5;
37 | event.getMovementInput().moveForward *= 5;
38 | }
39 | });
40 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/command/commands/MobOwner.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.command.commands;
2 |
3 | import java.util.Objects;
4 |
5 | import me.SaberAspect.SpectClient.api.util.world.EntityUtil;
6 | import me.SaberAspect.SpectClient.client.command.Command;
7 | import me.SaberAspect.SpectClient.client.command.CommandManager;
8 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
9 | import net.minecraft.client.Minecraft;
10 | import net.minecraft.entity.passive.AbstractHorse;
11 | import net.minecraft.util.text.TextFormatting;
12 |
13 | public class MobOwner extends Command {
14 |
15 | public MobOwner() {
16 | super("mobOwner", "check the owner of a ridden mob.", "mobOwner", "mo");
17 | }
18 |
19 | @Override
20 | public void onCommand(String[] args, String command) {
21 | if(args.length == 0) {
22 | if (Minecraft.getMinecraft().player.getRidingEntity() != null && Minecraft.getMinecraft().player.getRidingEntity() instanceof AbstractHorse) {
23 | AbstractHorse horse = (AbstractHorse) Minecraft.getMinecraft().player.getRidingEntity();
24 |
25 | String ownerUUID = horse.getOwnerUniqueId() == null ? "entity has no owner" : horse.getOwnerUniqueId().toString();
26 | String ownerReplace = Objects.requireNonNull(EntityUtil.getNameFromUUID(ownerUUID)).replace("\"", "");
27 |
28 | ModuleManager.addChatMessage("mob owner is " + TextFormatting.GREEN + ownerReplace);
29 | }else {
30 | ModuleManager.addChatMessage("ridden entity is not compatible with this command");
31 | }
32 | }else CommandManager.correctUsageMsg("", getName(), getSyntax());
33 | }
34 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/command/commands/Vanish.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.command.commands;
2 |
3 | import me.SaberAspect.SpectClient.client.command.Command;
4 | import me.SaberAspect.SpectClient.client.command.CommandManager;
5 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
6 | import net.minecraft.client.Minecraft;
7 | import net.minecraft.entity.Entity;
8 |
9 | public class Vanish extends Command {
10 | private static Entity ridden;
11 |
12 | public Vanish() {
13 | super("vanish", "vanish ridden entities.", "vanish", "v");
14 | }
15 |
16 | @Override
17 | public void onCommand(String[] args, String command) {
18 | if(args.length == 0) {
19 | if (Minecraft.getMinecraft().player.getRidingEntity() != null && ridden == null) {
20 | ridden = Minecraft.getMinecraft().player.getRidingEntity();
21 |
22 | Minecraft.getMinecraft().player.dismountRidingEntity();
23 | Minecraft.getMinecraft().world.removeEntityFromWorld(ridden.getEntityId());
24 | ModuleManager.addChatMessage("entity " + ridden.getName() + " removed.");
25 | }else {
26 | if (ridden != null) {
27 | ridden.isDead = false;
28 |
29 | Minecraft.getMinecraft().world.addEntityToWorld(ridden.getEntityId(), ridden);
30 | Minecraft.getMinecraft().player.startRiding(ridden, true);
31 | ModuleManager.addChatMessage("entity " + ridden.getName() + " created.");
32 | ridden = null;
33 | }else {
34 | ModuleManager.addChatMessage("no entity is being ridden");
35 | }
36 | }
37 | }else CommandManager.correctUsageMsg("", getName(), getSyntax());
38 | }
39 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/render/DamageTiltCorrection.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.render;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.api.util.damagetilt.MessageUpdateAttackYaw;
6 | import me.SaberAspect.SpectClient.api.util.damagetilt.PacketHandler;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import net.minecraft.entity.EntityLivingBase;
10 | import net.minecraft.entity.player.EntityPlayer;
11 | import net.minecraft.entity.player.EntityPlayerMP;
12 | import net.minecraftforge.common.MinecraftForge;
13 | import net.minecraftforge.event.entity.living.LivingKnockBackEvent;
14 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
15 |
16 | public class DamageTiltCorrection extends Module {
17 |
18 | public DamageTiltCorrection() {
19 | super ("damageTilt", "fixes minecraft's age old damage tilt bug.", Keyboard.KEY_NONE, Category.RENDER);
20 | }
21 |
22 | @SubscribeEvent
23 | public void onKnockback(LivingKnockBackEvent event) {
24 | if (event.getEntityLiving() instanceof EntityPlayer) {
25 | EntityPlayer player = (EntityPlayer)event.getEntityLiving();
26 | if (player.world.isRemote)
27 | return;
28 | PacketHandler.instance.sendTo(new MessageUpdateAttackYaw((EntityLivingBase)player), (EntityPlayerMP)player);
29 | }
30 | }
31 |
32 | public void onEnable() {
33 | PacketHandler.init();
34 | MinecraftForge.EVENT_BUS.register(this);
35 | }
36 |
37 | public void onDisable() {
38 | MinecraftForge.EVENT_BUS.unregister(this);
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/world/TpsUtils.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.world;
2 | /*package me.srgantmoomoo.api.util.world;
3 |
4 | import me.srgantmoomoo.api.event.events.PacketEvent;
5 | import me.zero.alpine.listener.EventHandler;
6 | import me.zero.alpine.listener.Listener;
7 | import net.minecraft.network.play.server.SPacketTimeUpdate;
8 | import net.minecraft.util.math.MathHelper;
9 |
10 | import java.util.Arrays;
11 |
12 | // @Author 086
13 |
14 | public class TpsUtils{
15 | private static final float[] tickRates = new float[20];
16 | private int nextIndex = 0;
17 | private long timeLastTimeUpdate;
18 |
19 | public TpsUtils(){
20 | nextIndex = 0;
21 | timeLastTimeUpdate = -1L;
22 | Arrays.fill(tickRates, 0.0F);
23 | }
24 |
25 | public static float getTickRate(){
26 | float numTicks = 0.0F;
27 | float sumTickRates = 0.0F;
28 | for (float tickRate : tickRates){
29 | if (tickRate > 0.0F){
30 | sumTickRates += tickRate;
31 | numTicks += 1.0F;
32 | }
33 | }
34 | return MathHelper.clamp(sumTickRates / numTicks, 0.0F, 20.0F);
35 | }
36 |
37 | private void onTimeUpdate(){
38 | if (this.timeLastTimeUpdate != -1L){
39 | float timeElapsed = (float) (System.currentTimeMillis() - this.timeLastTimeUpdate) / 1000.0F;
40 | tickRates[(this.nextIndex % tickRates.length)] = MathHelper.clamp(20.0F / timeElapsed, 0.0F, 20.0F);
41 | this.nextIndex += 1;
42 | }
43 | this.timeLastTimeUpdate = System.currentTimeMillis();
44 | }
45 |
46 | @EventHandler
47 | Listener listener = new Listener<>(event -> {
48 | if (event.getPacket() instanceof SPacketTimeUpdate){
49 | onTimeUpdate();
50 | }
51 | });
52 | }
53 | */
54 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/Velocity.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.PacketEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.SaberAspect.SpectClient.client.setting.settings.NumberSetting;
10 | import me.zero.alpine.listener.EventHandler;
11 | import me.zero.alpine.listener.Listener;
12 | import net.minecraft.client.Minecraft;
13 | import net.minecraft.network.play.server.SPacketEntityVelocity;
14 | import net.minecraft.network.play.server.SPacketExplosion;
15 |
16 | public class Velocity extends Module {
17 | public NumberSetting percent = new NumberSetting("percent", this, 0, 0, 100, 10);
18 |
19 | private Minecraft mc = Minecraft.getMinecraft();
20 |
21 | public boolean on;
22 |
23 | public Velocity() {
24 | super ("velocity", "take no knockback when hit.", Keyboard.KEY_NONE, Category.PLAYER);
25 | this.addSettings();
26 | }
27 |
28 | public void onEnable() {
29 | Main.EVENT_BUS.subscribe(this);
30 | }
31 |
32 | public void onDisable() {
33 | Main.EVENT_BUS.unsubscribe(this);
34 | }
35 |
36 | @EventHandler
37 | private final Listener receiveListener = new Listener<>(event -> {
38 | if (event.getPacket() instanceof SPacketEntityVelocity){
39 | if (((SPacketEntityVelocity) event.getPacket()).getEntityID() == mc.player.getEntityId()) {
40 | event.cancel();
41 | }
42 | }
43 | if (event.getPacket() instanceof SPacketExplosion){
44 | event.cancel();
45 | }
46 | });
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/exploits/NoModList.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.exploits;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import io.netty.buffer.Unpooled;
6 | import me.SaberAspect.Main;
7 | import me.SaberAspect.SpectClient.api.event.events.PacketEvent;
8 | import me.SaberAspect.SpectClient.client.module.Category;
9 | import me.SaberAspect.SpectClient.client.module.Module;
10 | import me.zero.alpine.listener.EventHandler;
11 | import me.zero.alpine.listener.Listener;
12 | import net.minecraft.network.PacketBuffer;
13 | import net.minecraft.network.play.client.CPacketCustomPayload;
14 | import net.minecraftforge.fml.common.network.internal.FMLProxyPacket;
15 |
16 | public class NoModList extends Module {
17 |
18 | public NoModList() {
19 | super("NoModList", "stops forge from sending ur mod list to server's.", Keyboard.KEY_NONE, Category.EXPLOITS);
20 | }
21 |
22 | @EventHandler
23 | private Listener send_listener = new Listener<>(event -> {
24 | if (event.getPacket() instanceof FMLProxyPacket && !mc.isSingleplayer()) {
25 | event.cancel();
26 | }
27 | if (event.getPacket() instanceof CPacketCustomPayload) {
28 | final CPacketCustomPayload packet = (CPacketCustomPayload) event.getPacket();
29 | if (packet.getChannelName().equalsIgnoreCase("MC|Brand")) {
30 | packet.data = new PacketBuffer(Unpooled.buffer()).writeString("vanilla");
31 | }
32 | }
33 | });
34 |
35 | public void onEnable() {
36 | Main.EVENT_BUS.subscribe(this);
37 | }
38 |
39 | public void onDisable() {
40 | Main.EVENT_BUS.unsubscribe(this);
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/setting/settings/ModeSetting.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.setting.settings;
2 |
3 | import java.util.Arrays;
4 | import java.util.List;
5 |
6 | import com.lukflug.panelstudio.settings.EnumSetting;
7 |
8 | import me.SaberAspect.Main;
9 | import me.SaberAspect.SpectClient.client.module.Module;
10 | import me.SaberAspect.SpectClient.client.setting.Setting;
11 |
12 | /*
13 | * Written by @SrgantMooMoo on 11/17/20.
14 | */
15 |
16 | public class ModeSetting extends Setting implements EnumSetting {
17 | public int index;
18 |
19 | public List modes;
20 |
21 | public ModeSetting(String name, Module parent, String defaultMode, String... modes) {
22 | this.name = name;
23 | this.parent = parent;
24 | this.modes = Arrays.asList(modes);
25 | this.index = this.modes.indexOf(defaultMode);
26 | }
27 |
28 | public String getMode() {
29 | return this.modes.get(this.index);
30 | }
31 |
32 | public void setMode(String mode) {
33 | this.index = this.modes.indexOf(mode);
34 |
35 | if(Main.saveLoad != null) {
36 | Main.saveLoad.save();
37 | }
38 | }
39 |
40 | public boolean is(String mode) {
41 | return (this.index == this.modes.indexOf(mode));
42 | }
43 |
44 | public void cycle() {
45 | if (this.index < this.modes.size() - 1) {
46 | this.index++;
47 | } else {
48 | this.index = 0;
49 | }
50 | }
51 |
52 | @Override
53 | public String getValueName() {
54 | return this.modes.get(this.index);
55 | }
56 |
57 | @Override
58 | public void increment() {
59 | if (this.index < this.modes.size() - 1) {
60 | this.index++;
61 | } else {
62 | this.index = 0;
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/save/ClickGuiSave.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.save;
2 |
3 | import java.io.File;
4 | import java.io.IOException;
5 | import java.nio.file.Files;
6 | import java.nio.file.Paths;
7 |
8 | import me.SaberAspect.Main;
9 | import me.SaberAspect.SpectClient.client.ui.clickgui.ClickGuiConfig;
10 |
11 |
12 | public class ClickGuiSave {
13 |
14 | public ClickGuiSave() {
15 | try {
16 | clickGuiSave();
17 | }
18 | catch (IOException e) {
19 | e.printStackTrace();
20 | }
21 | }
22 |
23 | public static final String fileName = "SpectClient/";
24 | String mainName = "clickGui/";
25 |
26 | public void clickGuiSave() throws IOException {
27 | if (!Files.exists(Paths.get(fileName))) {
28 | Files.createDirectories(Paths.get(fileName));
29 | }
30 | if (!Files.exists(Paths.get(fileName + mainName))) {
31 | Files.createDirectories(Paths.get(fileName + mainName));
32 | }
33 | }
34 |
35 | public void registerFiles(String location, String name) throws IOException {
36 | if (!Files.exists(Paths.get(fileName + location + name + ".json"))) {
37 | Files.createFile(Paths.get(fileName + location + name + ".json"));
38 | }
39 | else {
40 | File file = new File(fileName + location + name + ".json");
41 |
42 | file.delete();
43 |
44 | Files.createFile(Paths.get(fileName + location +name + ".json"));
45 | }
46 | }
47 |
48 | public void saveClickGUIPositions() throws IOException {
49 | registerFiles(mainName, "ClickGUI");
50 | Main.clickGui.gui.saveConfig(new ClickGuiConfig(fileName+mainName));
51 | }
52 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/damagetilt/MessageUpdateAttackYaw.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.damagetilt;
2 |
3 | import io.netty.buffer.ByteBuf;
4 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
5 | import net.minecraft.client.Minecraft;
6 | import net.minecraft.entity.EntityLivingBase;
7 | import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
8 | import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
9 | import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
10 | import net.minecraftforge.fml.relauncher.Side;
11 | import net.minecraftforge.fml.relauncher.SideOnly;
12 |
13 | public class MessageUpdateAttackYaw implements IMessage {
14 | private float attackedAtYaw;
15 |
16 | public MessageUpdateAttackYaw() {}
17 |
18 | public MessageUpdateAttackYaw(EntityLivingBase entity) {
19 | this.attackedAtYaw = entity.attackedAtYaw;
20 | }
21 |
22 | public void fromBytes(ByteBuf buf) {
23 | this.attackedAtYaw = buf.readFloat();
24 | }
25 |
26 | public void toBytes(ByteBuf buf) {
27 | buf.writeFloat(this.attackedAtYaw);
28 | }
29 |
30 | public static class Handler implements IMessageHandler {
31 | public IMessage onMessage(MessageUpdateAttackYaw message, MessageContext ctx) {
32 | if (ctx.side == Side.CLIENT)
33 | Minecraft.getMinecraft().addScheduledTask(() -> fromMessage(message));
34 | return null;
35 | }
36 |
37 | @SideOnly(Side.CLIENT)
38 | public static void fromMessage(MessageUpdateAttackYaw message) {
39 | if (!ModuleManager.getModuleByName("damageTilt").isToggled())
40 | return;
41 | (Minecraft.getMinecraft()).player.attackedAtYaw = message.attackedAtYaw;
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/command/commands/Friend.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.command.commands;
2 |
3 | import com.mojang.realmsclient.gui.ChatFormatting;
4 |
5 | import me.SaberAspect.SpectClient.client.command.Command;
6 | import me.SaberAspect.SpectClient.client.command.CommandManager;
7 | import me.SaberAspect.SpectClient.client.friend.FriendManager;
8 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
9 |
10 | public class Friend extends Command {
11 |
12 | public Friend() {
13 | super("friend", "manage your friends.", "friend list | friend add | friend remove | friend clear", "f");
14 | }
15 |
16 | @Override
17 | public void onCommand(String[] args, String command) {
18 | if(args.length > 0) {
19 | String start = args[0];
20 |
21 | if(start.equalsIgnoreCase("list")) {
22 | ModuleManager.addChatMessage("friends: " + FriendManager.getFriendsByName());
23 | }else if(start.equalsIgnoreCase("clear")) {
24 | FriendManager.clearFriends();
25 | ModuleManager.addChatMessage("cleared all friends");
26 | }else
27 |
28 | if (start.equalsIgnoreCase("add") && !FriendManager.isFriend(args[1])) {
29 | FriendManager.addFriend(args[1]);
30 | ModuleManager.addChatMessage(ChatFormatting.GREEN + "added" + ChatFormatting.GRAY + " friend: " + args[1].toUpperCase());
31 | }else if (start.equalsIgnoreCase("remove") && FriendManager.isFriend(args[1])) {
32 | FriendManager.removeFriend(args[1]);
33 | ModuleManager.addChatMessage(ChatFormatting.DARK_RED + "removed" + ChatFormatting.GRAY + " friend: " + args[1].toUpperCase());
34 | }else {
35 | CommandManager.correctUsageMsg("", getName(), getSyntax());
36 | }
37 | }else CommandManager.correctUsageMsg("", getName(), getSyntax());
38 | }
39 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/world/GeometryMasks.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.world;
2 |
3 | import net.minecraft.util.EnumFacing;
4 |
5 | import java.util.HashMap;
6 |
7 | public final class GeometryMasks{
8 |
9 | public static final HashMap FACEMAP = new HashMap<>();
10 | static{
11 | FACEMAP.put(EnumFacing.DOWN, Quad.DOWN);
12 | FACEMAP.put(EnumFacing.WEST, Quad.WEST);
13 | FACEMAP.put(EnumFacing.NORTH, Quad.NORTH);
14 | FACEMAP.put(EnumFacing.SOUTH, Quad.SOUTH);
15 | FACEMAP.put(EnumFacing.EAST, Quad.EAST);
16 | FACEMAP.put(EnumFacing.UP, Quad.UP);
17 | }
18 |
19 | public static final class Quad{
20 | public static final int DOWN = 0x01;
21 | public static final int UP = 0x02;
22 | public static final int NORTH = 0x04;
23 | public static final int SOUTH = 0x08;
24 | public static final int WEST = 0x10;
25 | public static final int EAST = 0x20;
26 | public static final int ALL = DOWN | UP | NORTH | SOUTH | WEST | EAST;
27 | }
28 |
29 | public static final class Line{
30 | public static final int DOWN_WEST = 0x11;
31 | public static final int UP_WEST = 0x12;
32 | public static final int DOWN_EAST = 0x21;
33 | public static final int UP_EAST = 0x22;
34 | public static final int DOWN_NORTH = 0x05;
35 | public static final int UP_NORTH = 0x06;
36 | public static final int DOWN_SOUTH = 0x09;
37 | public static final int UP_SOUTH = 0x0A;
38 | public static final int NORTH_WEST = 0x14;
39 | public static final int NORTH_EAST = 0x24;
40 | public static final int SOUTH_WEST = 0x18;
41 | public static final int SOUTH_EAST = 0x28;
42 | public static final int ALL = DOWN_WEST | UP_WEST | DOWN_EAST | UP_EAST | DOWN_NORTH | UP_NORTH | DOWN_SOUTH | UP_SOUTH | NORTH_WEST | NORTH_EAST | SOUTH_WEST | SOUTH_EAST;
43 | }
44 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/render/ColorMain.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.render;
2 |
3 | import java.util.ArrayList;
4 |
5 | import org.lwjgl.input.Keyboard;
6 |
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.SaberAspect.SpectClient.client.setting.settings.ModeSetting;
10 | import net.minecraft.util.text.TextFormatting;
11 |
12 | // this is from gs
13 |
14 | public class ColorMain extends Module {
15 |
16 | private static final Module ColorMain = null;
17 | public static ModeSetting colorModel = new ModeSetting("penis right?", ColorMain, "HSB", "RGB", "HSB");
18 |
19 | public ColorMain() {
20 | super ("colorMain", "world of colors", Keyboard.KEY_NONE, Category.CLIENT);
21 | this.addSettings(colorModel);
22 | }
23 |
24 | public void setup() {
25 | ArrayList tab = new ArrayList<>();
26 | tab.add("Black");
27 | tab.add("Dark Green");
28 | tab.add("Dark Red");
29 | tab.add("Gold");
30 | tab.add("Dark Gray");
31 | tab.add("Green");
32 | tab.add("Red");
33 | tab.add("Yellow");
34 | tab.add("Dark Blue");
35 | tab.add("Dark Aqua");
36 | tab.add("Dark Purple");
37 | tab.add("Gray");
38 | tab.add("Blue");
39 | tab.add("Aqua");
40 | tab.add("Light Purple");
41 | tab.add("White");
42 | ArrayList models=new ArrayList<>();
43 | models.add("RGB");
44 | models.add("HSB");
45 | }
46 |
47 | public void onEnable() {
48 | this.disable();
49 | }
50 |
51 | private static TextFormatting settingToFormatting () {
52 | return TextFormatting.AQUA;
53 | }
54 |
55 | public static TextFormatting getEnabledColor() { return settingToFormatting(); }
56 |
57 | public static TextFormatting getDisabledColor() { return settingToFormatting(); }
58 |
59 | }
60 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/hud/Watermark.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.hud;
2 |
3 | import java.awt.Color;
4 | import java.awt.Point;
5 | import com.lukflug.panelstudio.hud.HUDList;
6 | import com.lukflug.panelstudio.hud.ListComponent;
7 | import com.lukflug.panelstudio.theme.Theme;
8 | import com.mojang.realmsclient.gui.ChatFormatting;
9 |
10 | import me.SaberAspect.Reference;
11 | import me.SaberAspect.SpectClient.api.util.render.JColor;
12 | import me.SaberAspect.SpectClient.client.module.Category;
13 | import me.SaberAspect.SpectClient.client.module.HudModule;
14 | import me.SaberAspect.SpectClient.client.setting.settings.ColorSetting;
15 |
16 |
17 | public class Watermark extends HudModule {
18 | public ColorSetting color = new ColorSetting("color", this, new JColor(121, 193, 255, 255));
19 |
20 | public Watermark() {
21 | super("watermark", "SpectClient watermark", new Point(-2,1), Category.HUD);
22 | this.addSettings(color);
23 |
24 |
25 | toggled = true;
26 |
27 | }
28 |
29 | @Override
30 | public void populate (Theme theme) {
31 | component = new ListComponent(getName(), theme.getPanelRenderer(), position, new WatermarkList());
32 | }
33 |
34 | private class WatermarkList implements HUDList {
35 |
36 | @Override
37 | public int getSize() {
38 | return 1;
39 | }
40 |
41 | @Override
42 | public String getItem(int index) {
43 | return ChatFormatting.WHITE + Reference.NAME + " " + ChatFormatting.RESET + Reference.VERSION;
44 | }
45 |
46 | @Override
47 | public Color getItemColor(int index) {
48 | return color.getValue();
49 | }
50 |
51 | @Override
52 | public boolean sortUp() {
53 | return false;
54 | }
55 |
56 | @Override
57 | public boolean sortRight() {
58 | return false;
59 | }
60 | }
61 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinEntityRenderer.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.multiplayer.WorldClient;
4 | import net.minecraft.client.renderer.EntityRenderer;
5 | import net.minecraft.util.math.RayTraceResult;
6 | import net.minecraft.util.math.Vec3d;
7 |
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.Redirect;
12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
13 |
14 | import me.SaberAspect.Main;
15 | import me.SaberAspect.SpectClient.api.event.events.RenderCameraEvent;
16 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
17 | import me.SaberAspect.SpectClient.client.module.modules.render.NoRender;
18 |
19 | @Mixin(EntityRenderer.class)
20 | public class MixinEntityRenderer {
21 |
22 | @Inject(method = "hurtCameraEffect", at = @At("HEAD"), cancellable = true)
23 | public void hurtCameraEffect(float ticks, CallbackInfo info) {
24 | if (ModuleManager.isModuleEnabled("noRender") && ((NoRender)ModuleManager.getModuleByName("noRender")).hurtCam.is("normal"))
25 | info.cancel();
26 | }
27 |
28 | @Redirect(method = "orientCamera", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/WorldClient;rayTraceBlocks(Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/util/math/Vec3d;)Lnet/minecraft/util/math/RayTraceResult;"), expect = 0)
29 | private RayTraceResult rayTraceBlocks(WorldClient worldClient, Vec3d start, Vec3d end) {
30 | RenderCameraEvent event = new RenderCameraEvent();
31 | Main.EVENT_BUS.post(event);
32 | if (event.isCancelled())
33 | return null;
34 | else return worldClient.rayTraceBlocks(start, end);
35 | }
36 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/Mcf.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 | import org.lwjgl.input.Mouse;
5 |
6 | import me.SaberAspect.Main;
7 | import me.SaberAspect.SpectClient.client.friend.FriendManager;
8 | import me.SaberAspect.SpectClient.client.module.Category;
9 | import me.SaberAspect.SpectClient.client.module.Module;
10 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
11 | import me.zero.alpine.listener.EventHandler;
12 | import me.zero.alpine.listener.Listener;
13 | import net.minecraft.entity.player.EntityPlayer;
14 | import net.minecraft.util.math.RayTraceResult;
15 | import net.minecraftforge.fml.common.gameevent.InputEvent;
16 |
17 | public class Mcf extends Module {
18 |
19 | public Mcf() {
20 | super("mcf", "middle click a player to friend them.", Keyboard.KEY_NONE, Category.PLAYER);
21 | }
22 |
23 | public void onEnable() {
24 | Main.EVENT_BUS.subscribe(this);
25 | }
26 |
27 | public void onDisable() {
28 | Main.EVENT_BUS.unsubscribe(this);
29 | }
30 |
31 | @EventHandler
32 | private final Listener listener = new Listener<>(event -> {
33 | if (mc.objectMouseOver.typeOfHit.equals(RayTraceResult.Type.ENTITY) && mc.objectMouseOver.entityHit instanceof EntityPlayer && Mouse.isButtonDown(2)) {
34 | if (FriendManager.isFriend(mc.objectMouseOver.entityHit.getName())) {
35 | FriendManager.removeFriend(mc.objectMouseOver.entityHit.getName());
36 | ModuleManager.addChatMessage("removed friend: " + mc.objectMouseOver.entityHit.getName());
37 | }else {
38 | FriendManager.addFriend(mc.objectMouseOver.entityHit.getName());
39 | ModuleManager.addChatMessage("added friend: " + mc.objectMouseOver.entityHit.getName());
40 | }
41 | }
42 | });
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/setting/settings/ColorSetting.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.setting.settings;
2 |
3 | import java.awt.Color;
4 |
5 | import me.SaberAspect.SpectClient.api.util.render.JColor;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import me.SaberAspect.SpectClient.client.setting.Setting;
8 |
9 | public class ColorSetting extends Setting implements com.lukflug.panelstudio.settings.ColorSetting {
10 |
11 | private boolean rainbow;
12 | private JColor value;
13 |
14 | public ColorSetting (String name, Module parent, final JColor value) {
15 | this.name = name;
16 | this.parent = parent;
17 | this.value = value;
18 | }
19 |
20 | public JColor getValue() {
21 | if (rainbow) {
22 | return JColor.fromHSB((System.currentTimeMillis()%(360*20))/(360f * 20),0.5f,1f);
23 | }
24 | return this.value;
25 | }
26 |
27 | /*public static int rainbow(int delay) {
28 | double rainbowState = Math.ceil((System.currentTimeMillis() + delay) / 20.0);
29 | rainbowState %= 360;
30 | return Color.getHSBColor((float) (rainbowState / 360.0f), 0.5f, 0.5f).getRGB();
31 | }*/
32 |
33 | public void setValue (boolean rainbow, final JColor value) {
34 | this.rainbow = rainbow;
35 | this.value = value;
36 | }
37 |
38 | public long toInteger() {
39 | return this.value.getRGB() & (0xFFFFFFFF);
40 | }
41 |
42 | public void fromInteger (long number) {
43 | this.value = new JColor(Math.toIntExact(number & 0xFFFFFFFF),true);
44 | }
45 |
46 | public JColor getColor() {
47 | return this.value;
48 | }
49 |
50 | @Override
51 | public boolean getRainbow() {
52 | return this.rainbow;
53 | }
54 |
55 | @Override
56 | public void setValue(Color value) {
57 | setValue(getRainbow(),new JColor(value));
58 | }
59 |
60 | @Override
61 | public void setRainbow(boolean rainbow) {
62 | this.rainbow = rainbow;
63 | }
64 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/Login/Mapping.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.Login;
2 |
3 | import java.lang.reflect.Field;
4 |
5 | import net.minecraft.client.Minecraft;
6 | import net.minecraft.client.multiplayer.PlayerControllerMP;
7 |
8 | public class Mapping {
9 |
10 | public static String session = isNotObfuscated() ? "session" : "field_71449_j";
11 | public static String yaw = isNotObfuscated() ? "yaw" : "field_149476_e";
12 | public static String pitch = isNotObfuscated() ? "pitch" : "field_149473_f";
13 | public static String rightClickDelayTimer = isNotObfuscated() ? "rightClickDelayTimer" : "field_71467_ac";
14 | public static String getPlayerInfo = isNotObfuscated() ? "getPlayerInfo" : "func_175155_b";
15 | public static String playerTextures = isNotObfuscated() ? "playerTextures" : "field_187107_a";
16 | public static String currentGameType = isNotObfuscated() ? "currentGameType" : "field_78779_k";
17 | public static String connection = isNotObfuscated() ? "connection" : "field_78774_b";
18 | public static String blockHitDelay = isNotObfuscated() ? "blockHitDelay" : "field_78781_i";
19 | public static String isInWeb = isNotObfuscated() ? "isInWeb" : "field_70134_J";
20 | public static String curBlockDamageMP = isNotObfuscated() ? "curBlockDamageMP" : "field_78770_f";
21 | public static String isHittingBlock = isNotObfuscated() ? "isHittingBlock" : "field_78778_j";
22 | public static String onUpdateWalkingPlayer = isNotObfuscated() ? "onUpdateWalkingPlayer" : "func_175161_p";
23 | public static String fire = isNotObfuscated() ? "fire" : "field_190534_ay";
24 | public static String isImmuneToFire = isNotObfuscated() ? "isImmuneToFire" : "field_70178_ae";
25 |
26 | public static boolean isNotObfuscated() {
27 | try { return Minecraft.class.getDeclaredField("instance") != null;
28 | } catch (Exception ex) { return false; }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/pvp/FastUse.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.pvp;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
8 | import net.minecraft.client.Minecraft;
9 | import net.minecraft.init.Items;
10 | import net.minecraft.network.play.client.CPacketPlayerDigging;
11 | import net.minecraft.network.play.client.CPacketPlayerTryUseItem;
12 | import net.minecraft.util.math.BlockPos;
13 |
14 | public class FastUse extends Module {
15 |
16 | public boolean plswork;
17 | public BooleanSetting xpBottle = new BooleanSetting("xpBottle", this, true);
18 | public BooleanSetting bow = new BooleanSetting("bow", this, true);
19 |
20 | public FastUse() {
21 | super ("fastUse", "lol bow and xp bottle go brrrrrrrr.", Keyboard.KEY_NONE, Category.PVP);
22 | this.addSettings(xpBottle, bow);
23 | }
24 | private Minecraft mc = Minecraft.getMinecraft();
25 |
26 | @Override
27 | public void onUpdate() {
28 |
29 | if (bow.isEnabled() && mc.player.isHandActive() && mc.player.getItemInUseMaxCount() >= 3 && (mc.player.getHeldItemMainhand().getItem() == Items.BOW || mc.player.getHeldItemOffhand().getItem() == Items.BOW)) {
30 | mc.player.connection.sendPacket(new CPacketPlayerDigging(CPacketPlayerDigging.Action.RELEASE_USE_ITEM, BlockPos.ORIGIN, mc.player.getHorizontalFacing()));
31 | mc.player.connection.sendPacket(new CPacketPlayerTryUseItem(mc.player.getActiveHand()));
32 | mc.player.stopActiveHand();
33 | }
34 |
35 | if (xpBottle.isEnabled() && mc.player != null && (mc.player.getHeldItemMainhand().getItem() == Items.EXPERIENCE_BOTTLE || mc.player.getHeldItemOffhand().getItem() == Items.EXPERIENCE_BOTTLE)) {
36 | mc.rightClickDelayTimer = 0;
37 | }
38 | }
39 |
40 | }
41 |
42 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/command/commands/Bind.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.command.commands;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import com.mojang.realmsclient.gui.ChatFormatting;
6 |
7 | import me.SaberAspect.SpectClient.client.command.Command;
8 | import me.SaberAspect.SpectClient.client.command.CommandManager;
9 | import me.SaberAspect.SpectClient.client.module.Module;
10 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
11 |
12 | public class Bind extends Command {
13 |
14 | public Bind() {
15 | super("bind", "bind modules to specific keys.", "bind | bind clear", "b");
16 | }
17 |
18 | @Override
19 | public void onCommand(String[] args, String command) {
20 | if(args.length == 2) {
21 | String moduleName = args[0];
22 | String keyName = args[1];
23 | boolean moduleFound = false;
24 |
25 | for(Module module : ModuleManager.modules) {
26 | if(module.name.equalsIgnoreCase(moduleName)) {
27 | module.keyCode.setKeyCode(Keyboard.getKeyIndex(keyName.toUpperCase()));
28 |
29 | ModuleManager.addChatMessage(String.format(ChatFormatting.GREEN + "%s " + ChatFormatting.GRAY + "was bound to" + ChatFormatting.GREEN + " %s", module.name, Keyboard.getKeyName(module.getKey())));;
30 | moduleFound = true;
31 | break;
32 | }
33 | }
34 | if(!moduleFound) {
35 | ModuleManager.addChatMessage(ChatFormatting.DARK_RED + "module not found.");
36 | }
37 | }
38 |
39 | if(args.length == 1) {
40 | String clear = args[0];
41 | if(clear.equalsIgnoreCase("clear")) {
42 | for(Module module : ModuleManager.modules) {
43 | module.keyCode.setKeyCode(Keyboard.KEY_NONE);
44 | }
45 | ModuleManager.addChatMessage("cleared all binds.");
46 | } else CommandManager.correctUsageMsg("", getName(), getSyntax());
47 | }
48 | if(args.length == 0) CommandManager.correctUsageMsg("", getName(), getSyntax());
49 | }
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinMovementInputFromOptions.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.Minecraft;
4 | import net.minecraft.client.gui.GuiChat;
5 | import net.minecraft.client.settings.KeyBinding;
6 | import net.minecraft.util.MovementInput;
7 | import net.minecraft.util.MovementInputFromOptions;
8 | import org.lwjgl.input.Keyboard;
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.Redirect;
13 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
14 |
15 | import me.SaberAspect.Main;
16 | import me.SaberAspect.SpectClient.api.event.events.PlayerUpdateMoveStateEvent;
17 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
18 | import me.SaberAspect.SpectClient.client.module.modules.movement.GuiMove;
19 |
20 | @Mixin(value = MovementInputFromOptions.class, priority = 10000)
21 | public abstract class MixinMovementInputFromOptions extends MovementInput {
22 |
23 | @Inject(method = "updatePlayerMoveState", at = @At("RETURN"))
24 | public void updatePlayerMoveStateReturn(CallbackInfo callback) {
25 | Main.EVENT_BUS.post(new PlayerUpdateMoveStateEvent());
26 | }
27 |
28 | @Redirect(method = "updatePlayerMoveState", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/settings/KeyBinding;isKeyDown()Z"))
29 | public boolean isKeyPressed(KeyBinding keyBinding) {
30 | if (ModuleManager.isModuleEnabled("guiMove") && ((GuiMove)ModuleManager.getModuleByName("guiMove")).isToggled()
31 | && Minecraft.getMinecraft().currentScreen != null
32 | && !(Minecraft.getMinecraft().currentScreen instanceof GuiChat)
33 | && Minecraft.getMinecraft().player != null) {
34 | return Keyboard.isKeyDown(keyBinding.getKeyCode());
35 | }
36 | return keyBinding.isKeyDown();
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/pvp/Blink.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.pvp;
2 |
3 | import me.SaberAspect.Main;
4 | import me.SaberAspect.SpectClient.api.event.events.PacketEvent;
5 | import me.SaberAspect.SpectClient.client.module.Category;
6 | import me.SaberAspect.SpectClient.client.module.Module;
7 | import me.zero.alpine.listener.EventHandler;
8 | import me.zero.alpine.listener.Listener;
9 | import net.minecraft.client.entity.EntityOtherPlayerMP;
10 | import net.minecraft.network.play.client.CPacketPlayer;
11 |
12 | import java.util.LinkedList;
13 | import java.util.Queue;
14 |
15 | import org.lwjgl.input.Keyboard;
16 |
17 | public class Blink extends Module {
18 | private final Queue packetQueue = new LinkedList<>();
19 | private EntityOtherPlayerMP player;
20 |
21 | public Blink() {
22 | super ("blink", "makes temporary player clone and stuff.", Keyboard.KEY_NONE, Category.PVP);
23 | }
24 |
25 | @EventHandler
26 | private final Listener sendListener = new Listener<>(event -> {
27 | if(mc.player == null || mc.world == null) return;
28 |
29 | if (event.getPacket() instanceof CPacketPlayer) {
30 | event.cancel();
31 | packetQueue.add((CPacketPlayer) event.getPacket());
32 | }
33 | });
34 |
35 | @Override
36 | public void onEnable() {
37 | Main.EVENT_BUS.subscribe(this);
38 | player = new EntityOtherPlayerMP(mc.world, mc.getSession().getProfile());
39 | player.copyLocationAndAnglesFrom(mc.player);
40 | player.rotationYawHead = mc.player.rotationYawHead;
41 | mc.world.addEntityToWorld(-100, player);
42 | }
43 |
44 | @Override
45 | public void onDisable() {
46 | Main.EVENT_BUS.unsubscribe(this);
47 | while (!packetQueue.isEmpty()) mc.player.connection.sendPacket(packetQueue.poll());
48 |
49 | if (mc.player != null)
50 | {
51 | mc.world.removeEntityFromWorld(-100);
52 | player = null;
53 | }
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/hud/Frames.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.hud;
2 |
3 | import java.awt.Color;
4 | import java.awt.Point;
5 | import com.lukflug.panelstudio.hud.HUDList;
6 | import com.lukflug.panelstudio.hud.ListComponent;
7 | import com.lukflug.panelstudio.theme.Theme;
8 | import com.mojang.realmsclient.gui.ChatFormatting;
9 |
10 | import me.SaberAspect.SpectClient.api.util.render.JColor;
11 | import me.SaberAspect.SpectClient.client.module.Category;
12 | import me.SaberAspect.SpectClient.client.module.HudModule;
13 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
14 | import me.SaberAspect.SpectClient.client.setting.settings.ColorSetting;
15 | import net.minecraft.client.Minecraft;
16 |
17 |
18 | public class Frames extends HudModule {
19 | public ColorSetting color = new ColorSetting("color", this, new JColor(230, 0, 0, 255));
20 | public BooleanSetting sort = new BooleanSetting("sortRight", this, false);
21 |
22 | public Frames() {
23 | super("frames", "shows your fps on the hud.", new Point(-2,29), Category.HUD);
24 | this.addSettings(sort, color);
25 |
26 | toggled = true;
27 |
28 | }
29 |
30 | @Override
31 | public void populate (Theme theme) {
32 | component = new ListComponent(getName(), theme.getPanelRenderer(), position, new FramesList());
33 | }
34 |
35 | private class FramesList implements HUDList {
36 |
37 | @Override
38 | public int getSize() {
39 | return 1;
40 | }
41 |
42 | @Override
43 | public String getItem(int index) {
44 | if(Minecraft.getDebugFPS() <= 20) return "fps "+ Minecraft.getDebugFPS();
45 | else return ChatFormatting.WHITE + "fps "+ Minecraft.getDebugFPS();
46 | }
47 |
48 | @Override
49 | public Color getItemColor(int index) {
50 | return color.getValue();
51 | }
52 |
53 | @Override
54 | public boolean sortUp() {
55 | return false;
56 | }
57 |
58 | @Override
59 | public boolean sortRight() {
60 | return sort.isEnabled();
61 | }
62 | }
63 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/ui/clickgui/SyncableColorComponent.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.ui.clickgui;
2 |
3 | import com.lukflug.panelstudio.Animation;
4 | import com.lukflug.panelstudio.Context;
5 | import com.lukflug.panelstudio.FocusableComponent;
6 | import com.lukflug.panelstudio.Interface;
7 | import com.lukflug.panelstudio.settings.ColorComponent;
8 | import com.lukflug.panelstudio.settings.Toggleable;
9 | import com.lukflug.panelstudio.theme.Renderer;
10 | import com.lukflug.panelstudio.theme.Theme;
11 |
12 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
13 | import me.SaberAspect.SpectClient.client.setting.settings.ColorSetting;
14 | import net.minecraft.util.text.TextFormatting;
15 |
16 | public class SyncableColorComponent extends ColorComponent {
17 | public SyncableColorComponent (Theme theme, ColorSetting setting, Toggleable colorToggle, Animation animation) {
18 | super(TextFormatting.BOLD+setting.name,null,theme.getContainerRenderer(),animation,theme.getComponentRenderer(),setting,true,true,colorToggle);
19 | if (setting!=((ClickGuiModule) ModuleManager.getModuleByName("clickGui")).enabledColor) addComponent(new SyncButton(theme.getComponentRenderer()));
20 | }
21 |
22 | private class SyncButton extends FocusableComponent {
23 | public SyncButton (Renderer renderer) {
24 | super("Sync Color",null,renderer);
25 | }
26 |
27 | @Override
28 | public void render (Context context) {
29 | super.render(context);
30 | renderer.overrideColorScheme(overrideScheme);
31 | renderer.renderTitle(context,title,hasFocus(context),false);
32 | renderer.restoreColorScheme();
33 | }
34 |
35 | @Override
36 | public void handleButton (Context context, int button) {
37 | super.handleButton(context,button);
38 | if (button==Interface.LBUTTON && context.isClicked()) {
39 | setting.setValue(((ClickGuiModule) ModuleManager.getModuleByName("clickGui")).enabledColor.getColor());
40 | setting.setRainbow(((ClickGuiModule) ModuleManager.getModuleByName("clickGui")).enabledColor.getRainbow());
41 | }
42 | }
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/hud/KillAuraHud.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.hud;
2 |
3 | import java.awt.Color;
4 | import java.awt.Point;
5 |
6 | import com.lukflug.panelstudio.hud.HUDList;
7 | import com.lukflug.panelstudio.hud.ListComponent;
8 | import com.lukflug.panelstudio.theme.Theme;
9 | import com.mojang.realmsclient.gui.ChatFormatting;
10 |
11 | import me.SaberAspect.SpectClient.api.util.render.JColor;
12 | import me.SaberAspect.SpectClient.client.module.Category;
13 | import me.SaberAspect.SpectClient.client.module.HudModule;
14 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
15 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
16 | import me.SaberAspect.SpectClient.client.setting.settings.ColorSetting;
17 |
18 |
19 | public class KillAuraHud extends HudModule {
20 | private KillAuraInfoList list=new KillAuraInfoList();
21 |
22 | public ColorSetting color = new ColorSetting("color", this, new JColor(230, 0, 0, 255));
23 | public BooleanSetting sort = new BooleanSetting("sortRight", this, false);
24 |
25 |
26 | public KillAuraHud() {
27 | super("killAuraHud", "shows if killAura is on or off.", new Point(-2, 49), Category.HUD);
28 | this.addSettings(color, sort);
29 |
30 | toggled = true;
31 |
32 | }
33 |
34 | @Override
35 | public void populate (Theme theme) {
36 | component = new ListComponent(getName(), theme.getPanelRenderer(), position, list);
37 | }
38 |
39 | private class KillAuraInfoList implements HUDList {
40 |
41 | @Override
42 | public int getSize() {
43 | return 1;
44 | }
45 |
46 | @Override
47 | public String getItem(int index) {
48 | if (ModuleManager.isModuleEnabled("killAura")) return ChatFormatting.GREEN + "killA" + " on";
49 | else return "killA" + " off";
50 | }
51 |
52 | @Override
53 | public Color getItemColor(int index) {
54 | return color.getValue();
55 | }
56 |
57 | @Override
58 | public boolean sortUp() {
59 | return false;
60 | }
61 |
62 | @Override
63 | public boolean sortRight() {
64 | return sort.isEnabled();
65 | }
66 | }
67 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/hud/SurroundHud.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.hud;
2 |
3 | import java.awt.Color;
4 | import java.awt.Point;
5 |
6 | import com.lukflug.panelstudio.hud.HUDList;
7 | import com.lukflug.panelstudio.hud.ListComponent;
8 | import com.lukflug.panelstudio.theme.Theme;
9 | import com.mojang.realmsclient.gui.ChatFormatting;
10 |
11 | import me.SaberAspect.SpectClient.api.util.render.JColor;
12 | import me.SaberAspect.SpectClient.client.module.Category;
13 | import me.SaberAspect.SpectClient.client.module.HudModule;
14 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
15 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
16 | import me.SaberAspect.SpectClient.client.setting.settings.ColorSetting;
17 |
18 |
19 | public class SurroundHud extends HudModule {
20 | private SurroundInfoList list=new SurroundInfoList();
21 |
22 | public ColorSetting color = new ColorSetting("color", this, new JColor(230, 0, 0, 255));
23 | public BooleanSetting sort = new BooleanSetting("sortRight", this, false);
24 |
25 | public SurroundHud() {
26 | super("surroundHud", "shows if surround is on or off.", new Point(-2, 59), Category.HUD);
27 | this.addSettings(color, sort);
28 |
29 |
30 | toggled = true;
31 |
32 | }
33 |
34 | @Override
35 | public void populate (Theme theme) {
36 | component = new ListComponent(getName(), theme.getPanelRenderer(), position, list);
37 | }
38 |
39 | private class SurroundInfoList implements HUDList {
40 |
41 | @Override
42 | public int getSize() {
43 | return 1;
44 | }
45 |
46 | @Override
47 | public String getItem(int index) {
48 | if (ModuleManager.isModuleEnabled("surround")) return ChatFormatting.GREEN + "srnd" + " on";
49 | else return "srnd" + " off";
50 | }
51 |
52 | @Override
53 | public Color getItemColor(int index) {
54 | return color.getValue();
55 | }
56 |
57 | @Override
58 | public boolean sortUp() {
59 | return false;
60 | }
61 |
62 | @Override
63 | public boolean sortRight() {
64 | return sort.isEnabled();
65 | }
66 | }
67 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/command/commands/Clip.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.command.commands;
2 |
3 | import me.SaberAspect.SpectClient.client.command.Command;
4 | import me.SaberAspect.SpectClient.client.command.CommandManager;
5 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
6 | import net.minecraft.client.Minecraft;
7 | import net.minecraft.entity.Entity;
8 | import net.minecraft.util.math.Vec3d;
9 |
10 | public class Clip extends Command {
11 |
12 | public Clip() {
13 | super("clip", "clip horrizontally or vertically through blocks.", "clip h | clip v ", "c");
14 | }
15 |
16 | @Override
17 | public void onCommand(String[] args, String command) {
18 | if(args.length > 0) {
19 | String start = args[0];
20 | Entity entity = (Minecraft.getMinecraft().player.isRiding() ? Minecraft.getMinecraft().player.getRidingEntity() : Minecraft.getMinecraft().player);
21 | final Vec3d faceDirection = direction(Minecraft.getMinecraft().player.rotationYaw);
22 |
23 | if(start.equalsIgnoreCase("v")) {
24 | entity.setPosition(Minecraft.getMinecraft().player.posX, Minecraft.getMinecraft().player.posY + Double.parseDouble(args[1]), Minecraft.getMinecraft().player.posZ);
25 | ModuleManager.addChatMessage("vertically clipped " + args[1] + " blocks");
26 |
27 | }else if(start.equalsIgnoreCase("h")) {
28 | entity.setPosition(Minecraft.getMinecraft().player.posX + faceDirection.x * Double.parseDouble(args[1]), Minecraft.getMinecraft().player.posY, Minecraft.getMinecraft().player.posZ + faceDirection.z * Double.valueOf(args[1]));
29 | ModuleManager.addChatMessage("horizontally clipped " + args[1] + " blocks");
30 | }else
31 | CommandManager.correctUsageMsg("", getName(), getSyntax());
32 | }else CommandManager.correctUsageMsg("", getName(), getSyntax());
33 | }
34 |
35 | public static Vec3d direction(float yaw) {
36 | return new Vec3d(Math.cos(degToRad(yaw + 90f)), 0, Math.sin(degToRad(yaw + 90f)));
37 | }
38 |
39 | public static double degToRad(double deg) {
40 | return deg * (float) (Math.PI / 180.0f);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/hud/AutoCrystalHud.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.hud;
2 |
3 | import java.awt.Color;
4 | import java.awt.Point;
5 |
6 | import com.lukflug.panelstudio.hud.HUDList;
7 | import com.lukflug.panelstudio.hud.ListComponent;
8 | import com.lukflug.panelstudio.theme.Theme;
9 | import com.mojang.realmsclient.gui.ChatFormatting;
10 |
11 | import me.SaberAspect.SpectClient.api.util.render.JColor;
12 | import me.SaberAspect.SpectClient.client.module.Category;
13 | import me.SaberAspect.SpectClient.client.module.HudModule;
14 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
15 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
16 | import me.SaberAspect.SpectClient.client.setting.settings.ColorSetting;
17 |
18 |
19 | public class AutoCrystalHud extends HudModule {
20 | private AutoCInfoList list=new AutoCInfoList();
21 |
22 | public ColorSetting color = new ColorSetting("color", this, new JColor(230, 0, 0, 255));
23 | public BooleanSetting sort = new BooleanSetting("sortRight", this, false);
24 |
25 |
26 | public AutoCrystalHud() {
27 | super("autoCrystalHud", "shows if autoCrystal is on or off.", new Point(-2, 39), Category.HUD);
28 | this.addSettings(color, sort);
29 |
30 | toggled = true;
31 |
32 | }
33 |
34 | @Override
35 | public void populate (Theme theme) {
36 | component = new ListComponent(getName(), theme.getPanelRenderer(), position, list);
37 | }
38 |
39 | private class AutoCInfoList implements HUDList {
40 |
41 | @Override
42 | public int getSize() {
43 | return 1;
44 | }
45 |
46 | @Override
47 | public String getItem(int index) {
48 | if (ModuleManager.isModuleEnabled("autoCrystal")) return ChatFormatting.GREEN + "autoC" + " on";
49 | else return "autoC" + " off";
50 | }
51 |
52 | @Override
53 | public Color getItemColor(int index) {
54 | return color.getValue();
55 | }
56 |
57 | @Override
58 | public boolean sortUp() {
59 | return false;
60 | }
61 |
62 | @Override
63 | public boolean sortRight() {
64 | return sort.isEnabled();
65 | }
66 | }
67 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/hud/Coords.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.hud;
2 |
3 | import java.awt.Color;
4 | import java.awt.Point;
5 |
6 | import com.lukflug.panelstudio.hud.HUDList;
7 | import com.lukflug.panelstudio.hud.ListComponent;
8 | import com.lukflug.panelstudio.theme.Theme;
9 | import com.mojang.realmsclient.gui.ChatFormatting;
10 |
11 | import me.SaberAspect.SpectClient.api.util.render.JColor;
12 | import me.SaberAspect.SpectClient.client.module.Category;
13 | import me.SaberAspect.SpectClient.client.module.HudModule;
14 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
15 | import me.SaberAspect.SpectClient.client.setting.settings.ColorSetting;
16 |
17 | public class Coords extends HudModule {
18 | public ColorSetting color = new ColorSetting("color", this, new JColor(172, 172, 172, 255));
19 | public BooleanSetting sort = new BooleanSetting("sortRight", this, false);
20 |
21 |
22 | public Coords() {
23 | super("coords", "shows your coords on the hud.", new Point(122, 57), Category.HUD);
24 | this.addSettings(sort, color);
25 |
26 | toggled = true;
27 |
28 | }
29 |
30 | @Override
31 | public void populate (Theme theme) {
32 | component = new ListComponent(getName(), theme.getPanelRenderer(), position, new CoordsList());
33 | }
34 |
35 | private class CoordsList implements HUDList {
36 |
37 | @Override
38 | public int getSize() {
39 | return 1;
40 | }
41 |
42 | @Override
43 | public String getItem(int index) {
44 | return ChatFormatting.RESET + "(x)" + ChatFormatting.WHITE + mc.player.getPosition().getX()
45 | + ChatFormatting.RESET + "(y)" + ChatFormatting.WHITE + mc.player.getPosition().getY()
46 | + ChatFormatting.RESET + "(z)" + ChatFormatting.WHITE + mc.player.getPosition().getZ();
47 | }
48 |
49 | @Override
50 | public Color getItemColor(int index) {
51 | return color.getValue();
52 | }
53 |
54 | @Override
55 | public boolean sortUp() {
56 | return false;
57 | }
58 |
59 | @Override
60 | public boolean sortRight() {
61 | return sort.isEnabled();
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/global.css:
--------------------------------------------------------------------------------
1 |
2 |
3 |
43 | Dropdown Menu
44 |
45 |
46 |
47 |
48 | - Player
49 |
50 | - Flight
51 | - AutoSprint
52 | - AutoArmor
53 | - ChestStealer
54 | - Glide
55 | - Nuker
56 | - AntiFall
57 |
58 | - Visual
59 |
60 | - Glowing
61 | - Trajectories
62 | - XRay
63 | - EntityESP
64 | - ItemESP
65 |
66 | - Combat
67 |
68 | - AntiBot
69 | - AimBot
70 | - BowAimBot
71 | - Trigger
72 | - Criticals
73 | - KillAura
74 |
75 |
76 | - Other
77 |
78 | - Targets
79 | - Enemys
80 | - Teams
81 | - NoGuiEvents
82 | - PluginsGetter
83 | - AttackPacketCW
84 | - AttackPacketCIA
85 |
86 |
87 |
88 |
89 |
90 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/ChatSuffix.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import java.util.Arrays;
4 |
5 | import org.lwjgl.input.Keyboard;
6 |
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
10 | import me.SaberAspect.SpectClient.client.setting.settings.ModeSetting;
11 | import net.minecraftforge.client.event.ClientChatEvent;
12 | import net.minecraftforge.common.MinecraftForge;
13 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
14 |
15 | public class ChatSuffix extends Module {
16 | public ModeSetting mode = new ModeSetting("mode", this, "normal", "normal", "Fricked");
17 | public BooleanSetting discludePercent = new BooleanSetting("disclude%", this, true);
18 |
19 | public ChatSuffix() {
20 | super ("chatSuffix", "adds SpectClient's suffix to all of your chat msg's.", Keyboard.KEY_NONE, Category.PLAYER);
21 | this.addSettings(mode);
22 | }
23 |
24 | @SubscribeEvent
25 | public void onChat(final ClientChatEvent event) {
26 | if(toggled) {
27 | for (final String s : Arrays.asList("/", ".", "-", ",", ":", ";", "'", "\"", "+", "\\", "@", "#")) {
28 | if (event.getMessage().startsWith(s)) return;
29 | }
30 | if(mode.is("Fricked")) event.setMessage(event.getMessage() + " " + "ᕦᴘ�ѕᴛຕ" + "\u1d00" + "η " + "ѕᴛ��ηɢᕤ");
31 | else if(mode.is("normal")) event.setMessage(event.getMessage() + " " + "\u1566\u0160\u0050\u2130\u2102\uFF34\u2102\u013D\u1D00\u03B7\u0020\u044F\u0130\u0160\u2130\u0020\u0075\u0050\u1564");
32 | //( S P E c T C L A N spc R I S E spc G )
33 | // \u1566 \u1D18 \u1D0F \u0455 \u1D1B \u0E95 \u1D00 \u03B7 \u0020 \u0455 \u1D1B \u044F \u1D0F \u03B7 \u0262 \u1564 ᕦᴘ�ѕᴛຕᴀη ѕᴛ��ηɢᕤ
34 | }
35 | }
36 |
37 | public void onEnable() {
38 | MinecraftForge.EVENT_BUS.register(this);
39 | }
40 |
41 | public void onDisable() {
42 | MinecraftForge.EVENT_BUS.unregister(this);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinMinecraft.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.Minecraft;
4 | import net.minecraft.client.entity.EntityPlayerSP;
5 | import net.minecraft.client.multiplayer.PlayerControllerMP;
6 | import org.spongepowered.asm.mixin.Mixin;
7 | import org.spongepowered.asm.mixin.Shadow;
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 | import me.SaberAspect.SpectClient.api.mixin.mixins.accessor.AccessorEntityPlayerSP;
13 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
14 |
15 | @Mixin(value = Minecraft.class)
16 | public class MixinMinecraft {
17 |
18 | @Shadow public EntityPlayerSP player;
19 | @Shadow public PlayerControllerMP playerController;
20 |
21 | private boolean handActive = false;
22 | private boolean isHittingBlock = false;
23 |
24 | @Inject(method = "rightClickMouse", at = @At("HEAD"))
25 | public void rightClickMousePre(CallbackInfo ci) {
26 | if (ModuleManager.isModuleEnabled("multitask")) {
27 | isHittingBlock = playerController.getIsHittingBlock();
28 | playerController.isHittingBlock = false;
29 | }
30 | }
31 |
32 | @Inject(method = "rightClickMouse", at = @At("RETURN"))
33 | public void rightClickMousePost(CallbackInfo ci) {
34 | if (ModuleManager.isModuleEnabled("multitask") && !playerController.getIsHittingBlock()) {
35 | playerController.isHittingBlock = isHittingBlock;
36 | }
37 | }
38 |
39 | @Inject(method = "sendClickBlockToController", at = @At("HEAD"))
40 | public void sendClickBlockToControllerPre(boolean leftClick, CallbackInfo ci) {
41 | if (ModuleManager.isModuleEnabled("multitask")) {
42 | handActive = player.isHandActive();
43 | ((AccessorEntityPlayerSP) player).gsSetHandActive(false);
44 | }
45 | }
46 |
47 | @Inject(method = "sendClickBlockToController", at = @At("RETURN"))
48 | public void sendClickBlockToControllerPost(boolean leftClick, CallbackInfo ci) {
49 | if (ModuleManager.isModuleEnabled("multitask") && !player.isHandActive()) {
50 | ((AccessorEntityPlayerSP) player).gsSetHandActive(handActive);
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinEntity.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.entity.Entity;
4 | import net.minecraft.entity.MoverType;
5 |
6 | import org.spongepowered.asm.mixin.Mixin;
7 | import org.spongepowered.asm.mixin.Shadow;
8 | import org.spongepowered.asm.mixin.injection.At;
9 | import org.spongepowered.asm.mixin.injection.Redirect;
10 |
11 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
12 |
13 | @Mixin(Entity.class)
14 | public abstract class MixinEntity {
15 |
16 | @Redirect(method = "applyEntityCollision", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;addVelocity(DDD)V"))
17 | public void velocity(Entity entity, double x, double y, double z) {
18 | if (!ModuleManager.isModuleEnabled("noPush")) {
19 | entity.motionX += x;
20 | entity.motionY += y;
21 | entity.motionZ += z;
22 | entity.isAirBorne = true;
23 | }
24 | }
25 |
26 | @Shadow public abstract boolean equals(Object p_equals_1_);
27 |
28 | @Shadow
29 | public double posX;
30 |
31 | @Shadow
32 | public double posY;
33 |
34 | @Shadow
35 | public double posZ;
36 |
37 | @Shadow
38 | public double prevPosX;
39 |
40 | @Shadow
41 | public double prevPosY;
42 |
43 | @Shadow
44 | public double prevPosZ;
45 |
46 | @Shadow
47 | public double lastTickPosX;
48 |
49 | @Shadow
50 | public double lastTickPosY;
51 |
52 | @Shadow
53 | public double lastTickPosZ;
54 |
55 | @Shadow
56 | public float prevRotationYaw;
57 |
58 | @Shadow
59 | public float prevRotationPitch;
60 |
61 | @Shadow
62 | public float rotationPitch;
63 |
64 | @Shadow
65 | public float rotationYaw;
66 |
67 | @Shadow
68 | public boolean onGround;
69 |
70 | @Shadow
71 | public double motionX;
72 |
73 | @Shadow
74 | public double motionY;
75 |
76 | @Shadow
77 | public double motionZ;
78 |
79 | @Shadow
80 | public abstract boolean isSprinting();
81 |
82 | @Shadow
83 | public abstract boolean isRiding();
84 |
85 | @Shadow
86 | public void move(MoverType type, double x, double y, double z) {
87 |
88 | }
89 | }
--------------------------------------------------------------------------------
/_layouts/default.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {% if site.google_analytics %}
6 |
7 |
13 | {% endif %}
14 |
15 |
16 | {% seo %}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
37 |
38 |
39 | {{ content }}
40 |
41 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/pvp/Criticals.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.pvp;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.NetworkPacketEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.SaberAspect.SpectClient.client.setting.settings.ModeSetting;
10 | import me.zero.alpine.listener.EventHandler;
11 | import me.zero.alpine.listener.Listener;
12 | import net.minecraft.entity.EntityLivingBase;
13 | import net.minecraft.network.play.client.CPacketPlayer;
14 | import net.minecraft.network.play.client.CPacketUseEntity;
15 |
16 | public class Criticals extends Module {
17 | public ModeSetting mode = new ModeSetting("mode", this, "packet", "packet", "jump");
18 |
19 | public Criticals() {
20 | super ("criticals", "always land a critical hit.", Keyboard.KEY_NONE, Category.PVP);
21 | this.addSettings(mode);
22 | }
23 |
24 | public void onEnable() {
25 | Main.EVENT_BUS.subscribe(this);
26 | }
27 |
28 | public void onDisable() {
29 | Main.EVENT_BUS.unsubscribe(this);
30 | }
31 |
32 | @EventHandler
33 | private Listener PacketEvent = new Listener<>(event -> {
34 | if (event.getPacket() instanceof CPacketUseEntity) {
35 | CPacketUseEntity packet = (CPacketUseEntity)event.getPacket();
36 |
37 | if (packet.getAction() == CPacketUseEntity.Action.ATTACK) {
38 | if (packet.getEntityFromWorld(mc.world) instanceof EntityLivingBase && mc.player.onGround && !mc.gameSettings.keyBindJump.isKeyDown()) {
39 |
40 | if(mode.is("jump")) {
41 | mc.player.jump();
42 | }
43 |
44 | if(mode.is("packet")) {
45 | mc.player.connection.sendPacket(new CPacketPlayer.Position(mc.player.posX, mc.player.posY + 0.1f, mc.player.posZ, false));
46 | mc.player.connection.sendPacket(new CPacketPlayer.Position(mc.player.posX, mc.player.posY, mc.player.posZ, false));
47 | }
48 | }
49 | }
50 | }
51 | });
52 | }
53 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/hud/Totems.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.hud;
2 |
3 | import java.awt.Color;
4 | import java.awt.Point;
5 |
6 | import com.lukflug.panelstudio.hud.HUDList;
7 | import com.lukflug.panelstudio.hud.ListComponent;
8 | import com.lukflug.panelstudio.theme.Theme;
9 |
10 | import me.SaberAspect.SpectClient.api.util.render.JColor;
11 | import me.SaberAspect.SpectClient.client.module.Category;
12 | import me.SaberAspect.SpectClient.client.module.HudModule;
13 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
14 | import me.SaberAspect.SpectClient.client.setting.settings.ColorSetting;
15 | import net.minecraft.init.Items;
16 | import net.minecraft.item.ItemStack;
17 |
18 |
19 | public class Totems extends HudModule {
20 | private TotemList list=new TotemList();
21 |
22 | public ColorSetting color = new ColorSetting("color", this, new JColor(218, 165, 32, 255));
23 | public BooleanSetting sort = new BooleanSetting("sortRight", this, false);
24 |
25 | public Totems() {
26 | super("totems", "shows how many totems you have on the hud.", new Point(-2,11), Category.HUD);
27 | this.addSettings(sort, color);
28 |
29 | toggled = true;
30 |
31 | }
32 |
33 | public void onRender() {
34 | list.totems = mc.player.inventory.mainInventory.stream()
35 | .filter(itemStack -> itemStack.getItem() == Items.TOTEM_OF_UNDYING)
36 | .mapToInt(ItemStack::getCount).sum();
37 | if (mc.player.getHeldItemOffhand().getItem() == Items.TOTEM_OF_UNDYING)
38 | list.totems++;
39 | }
40 |
41 | @Override
42 | public void populate (Theme theme) {
43 | component = new ListComponent(getName(), theme.getPanelRenderer(), position, list);
44 | }
45 |
46 | private class TotemList implements HUDList {
47 |
48 | public int totems=0;
49 |
50 | @Override
51 | public int getSize() {
52 | return 1;
53 | }
54 |
55 | @Override
56 | public String getItem(int index) {
57 | return "" + totems;
58 | }
59 |
60 | @Override
61 | public Color getItemColor(int index) {
62 | return color.getValue();
63 | }
64 |
65 | @Override
66 | public boolean sortUp() {
67 | return false;
68 | }
69 |
70 | @Override
71 | public boolean sortRight() {
72 | return sort.isEnabled();
73 | }
74 | }
75 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/hud/Ping.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.hud;
2 |
3 | import java.awt.Color;
4 | import java.awt.Point;
5 |
6 | import com.lukflug.panelstudio.hud.HUDList;
7 | import com.lukflug.panelstudio.hud.ListComponent;
8 | import com.lukflug.panelstudio.theme.Theme;
9 | import com.mojang.realmsclient.gui.ChatFormatting;
10 |
11 | import me.SaberAspect.SpectClient.api.util.render.JColor;
12 | import me.SaberAspect.SpectClient.client.module.Category;
13 | import me.SaberAspect.SpectClient.client.module.HudModule;
14 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
15 | import me.SaberAspect.SpectClient.client.setting.settings.ColorSetting;
16 |
17 |
18 | public class Ping extends HudModule {
19 | public ColorSetting color = new ColorSetting("color", this, new JColor(230, 0, 0, 255));
20 | public BooleanSetting sort = new BooleanSetting("sortRight", this, false);
21 |
22 | public Ping() {
23 | super("ping", "shows ping on the hud.", new Point(-2,19), Category.HUD);
24 | this.addSettings(sort, color);
25 |
26 | toggled = true;
27 |
28 | }
29 |
30 | @Override
31 | public void populate (Theme theme) {
32 | component = new ListComponent(getName(), theme.getPanelRenderer(), position, new PingList());
33 | }
34 |
35 | private static int getPing () {
36 | int p = -1;
37 | if (mc.player == null || mc.getConnection() == null || mc.getConnection().getPlayerInfo(mc.player.getName()) == null) {
38 | p = -1;
39 | }
40 | else {
41 | p = mc.getConnection().getPlayerInfo(mc.player.getName()).getResponseTime();
42 | }
43 | return p;
44 | }
45 |
46 | private class PingList implements HUDList {
47 |
48 | @Override
49 | public int getSize() {
50 | return 1;
51 | }
52 |
53 | @Override
54 | public String getItem(int index) {
55 | if(getPing() >= 200) return "ping " + getPing();
56 | else return ChatFormatting.WHITE + "ping " + getPing();
57 | }
58 |
59 | @Override
60 | public Color getItemColor(int index) {
61 | return color.getValue();
62 | }
63 |
64 | @Override
65 | public boolean sortUp() {
66 | return false;
67 | }
68 |
69 | @Override
70 | public boolean sortRight() {
71 | return sort.isEnabled();
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/render/ViewModel.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.render;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.TransformSideFirstPersonEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
10 | import me.SaberAspect.SpectClient.client.setting.settings.NumberSetting;
11 | import me.zero.alpine.listener.EventHandler;
12 | import me.zero.alpine.listener.Listener;
13 | import net.minecraft.client.renderer.GlStateManager;
14 | import net.minecraft.util.EnumHandSide;
15 | import net.minecraftforge.common.MinecraftForge;
16 |
17 | public class ViewModel extends Module {
18 | public BooleanSetting cancelEating = new BooleanSetting("noEat", this, false);
19 | public NumberSetting LeftX = new NumberSetting("LeftX", this, 0, -2, 2, 0.1);
20 | public NumberSetting LeftY = new NumberSetting("LeftY", this, 0, -2, 2, 0.1);
21 | public NumberSetting LeftZ = new NumberSetting("LeftZ", this, 0, -2, 2, 0.1);
22 | public NumberSetting RightX = new NumberSetting("RightX", this, 0, -2, 2, 0.1);
23 | public NumberSetting RightY = new NumberSetting("RightY", this, 0, -2, 2, 0.1);
24 | public NumberSetting RightZ = new NumberSetting("RightZ", this, 0, -2, 2, 0.1);
25 |
26 | public ViewModel() {
27 | super("viewModel", "allows u to change how your model look in 1st person.", Keyboard.KEY_NONE, Category.RENDER);
28 | this.addSettings(LeftX, LeftY, LeftZ, RightX, RightY, RightZ);
29 | }
30 |
31 | @EventHandler
32 | private final Listener listener = new Listener<>(event -> {
33 | if (event.getEnumHandSide() == EnumHandSide.RIGHT) {
34 | GlStateManager.translate(RightX.getValue(), RightY.getValue(), RightZ.getValue());
35 | } else if (event.getEnumHandSide() == EnumHandSide.LEFT) {
36 | GlStateManager.translate(LeftX.getValue(), LeftY.getValue(), LeftZ.getValue());
37 | }
38 | });
39 |
40 | public void onEnable() {
41 | Main.EVENT_BUS.subscribe(this);
42 | MinecraftForge.EVENT_BUS.register(this);
43 | }
44 |
45 | public void onDisable() {
46 | Main.EVENT_BUS.unsubscribe(this);
47 | MinecraftForge.EVENT_BUS.unregister(this);
48 | }
49 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/hud/PlayerModel.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.hud;
2 |
3 | import java.awt.Color;
4 | import java.awt.Point;
5 |
6 | import com.lukflug.panelstudio.Context;
7 | import com.lukflug.panelstudio.Interface;
8 | import com.lukflug.panelstudio.hud.HUDComponent;
9 | import com.lukflug.panelstudio.theme.Theme;
10 |
11 | import me.SaberAspect.SpectClient.api.util.render.JColor;
12 | import me.SaberAspect.SpectClient.client.module.Category;
13 | import me.SaberAspect.SpectClient.client.module.HudModule;
14 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
15 | import me.SaberAspect.SpectClient.client.setting.settings.ColorSetting;
16 | import me.SaberAspect.SpectClient.client.setting.settings.NumberSetting;
17 | import me.SaberAspect.SpectClient.client.ui.clickgui.ClickGui;
18 |
19 | public class PlayerModel extends HudModule {
20 | public BooleanSetting rect = new BooleanSetting("rect", this, true);
21 | public NumberSetting size = new NumberSetting("size", this, 28, 10, 100, 1);
22 | public ColorSetting color = new ColorSetting("rectColor", this, new JColor(121, 193, 255, 100));
23 |
24 | public PlayerModel() {
25 | super("playerModel","shows the player model on the hud.", new Point(75, 2), Category.HUD);
26 | this.addSettings(size, rect, color);
27 |
28 |
29 | toggled = true;
30 |
31 | }
32 |
33 | @Override
34 | public void populate (Theme theme) {
35 | component = new PlayerModelComponent(theme);
36 | }
37 |
38 | private class PlayerModelComponent extends HUDComponent {
39 |
40 | public PlayerModelComponent (Theme theme) {
41 | super(getName(),theme.getPanelRenderer(),PlayerModel.this.position);
42 | }
43 |
44 | @Override
45 | public void render (Context context) {
46 | super.render(context);
47 | if(rect.isEnabled()) {
48 | Color bgcolor=new JColor(color.getValue(),100);
49 | context.getInterface().fillRect(context.getRect(),bgcolor,bgcolor,bgcolor,bgcolor);
50 | }
51 | ClickGui.renderEntity(mc.player,new Point(context.getPos().x+22,context.getPos().y+58-(mc.player.isSneaking()?10:0)), (int) size.getValue());
52 | }
53 |
54 | @Override
55 | public int getWidth (Interface inter) {
56 | return 44;
57 | }
58 |
59 | @Override
60 | public void getHeight (Context context) {
61 | context.setHeight(64);
62 | }
63 | }
64 |
65 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/exploits/AntiHunger.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.exploits;
2 |
3 | import net.minecraft.network.play.client.CPacketEntityAction;
4 | import net.minecraft.network.play.client.CPacketPlayer;
5 |
6 | import static net.minecraft.network.play.client.CPacketEntityAction.Action.START_SPRINTING;
7 | import static net.minecraft.network.play.client.CPacketEntityAction.Action.STOP_SPRINTING;
8 |
9 | import org.lwjgl.input.Keyboard;
10 |
11 | import me.SaberAspect.Main;
12 | import me.SaberAspect.SpectClient.api.event.events.NetworkPacketEvent;
13 | import me.SaberAspect.SpectClient.client.module.Category;
14 | import me.SaberAspect.SpectClient.client.module.Module;
15 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
16 | import me.zero.alpine.listener.EventHandler;
17 | import me.zero.alpine.listener.Listener;
18 |
19 | public final class AntiHunger extends Module {
20 | public BooleanSetting sprint = new BooleanSetting("cancelSprintPacket", this, false);
21 | public BooleanSetting ground = new BooleanSetting("spoofGroundState", this, true);
22 |
23 | public AntiHunger() {
24 | super ("antiHunger", "Cancells the sprint packet.", Keyboard.KEY_NONE, Category.EXPLOITS);
25 | this.addSettings(sprint,ground);
26 | }
27 |
28 | public void onEnable() {
29 | Main.EVENT_BUS.subscribe(this);
30 | }
31 |
32 | public void onDisable() {
33 | Main.EVENT_BUS.unsubscribe(this);
34 | }
35 |
36 | @EventHandler
37 | private Listener PacketEvent = new Listener<>(event -> {
38 | if (event.getPacket() instanceof CPacketPlayer && ground.isEnabled() && !mc.player.isElytraFlying()) {
39 | final CPacketPlayer packet = (CPacketPlayer) event.getPacket();
40 | if (mc.player.fallDistance > 0 || mc.playerController.isHittingBlock) {
41 | packet.onGround = true;
42 | }
43 | else {
44 | packet.onGround = false;
45 | }
46 | }
47 |
48 | if (event.getPacket() instanceof CPacketEntityAction && sprint.isEnabled()) {
49 | final CPacketEntityAction packet = (CPacketEntityAction) event.getPacket();
50 | if (packet.getAction() == START_SPRINTING || packet.getAction() == STOP_SPRINTING) {
51 | event.cancel();
52 | }
53 | }
54 | });
55 |
56 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/ChestStealer.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.PlayerUpdateEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.SaberAspect.SpectClient.client.setting.settings.ModeSetting;
10 | import me.SaberAspect.SpectClient.client.setting.settings.NumberSetting;
11 | import me.SaberAspect.SpectClient.api.util.world.JTimer;
12 | import me.zero.alpine.listener.EventHandler;
13 | import me.zero.alpine.listener.Listener;
14 | import net.minecraft.inventory.ClickType;
15 | import net.minecraft.inventory.ContainerChest;
16 |
17 | public class ChestStealer extends Module {
18 | public ModeSetting mode = new ModeSetting("mode", this, "steal", "steal", "drop");
19 | public NumberSetting delay = new NumberSetting("delay", this, 1, 0, 10, 1);
20 |
21 | public ChestStealer() {
22 | super ("chestStealer", "automatically steals from inventory gui's.", Keyboard.KEY_NONE, Category.PLAYER);
23 | this.addSettings(mode,delay);
24 | }
25 |
26 | private JTimer timer = new JTimer();
27 |
28 | public void onEnable() {
29 | Main.EVENT_BUS.subscribe(this);
30 | }
31 |
32 | public void onDisable() {
33 | Main.EVENT_BUS.unsubscribe(this);
34 | }
35 |
36 |
37 | @EventHandler
38 | private Listener OnPlayerUpdate = new Listener<>(event -> {
39 |
40 | if((Module.mc.player.openContainer != null) && ((Module.mc.player.openContainer instanceof ContainerChest))) {
41 | ContainerChest chest = (ContainerChest) Module.mc.player.openContainer;
42 |
43 | for(int i = 0; i < chest.getLowerChestInventory().getSizeInventory(); i++) {
44 | if((chest.getLowerChestInventory().getStackInSlot(i) != null) && (this.timer.hasReached(40L))) {
45 | if(mode.is("steal")) {
46 | Module.mc.playerController.windowClick(chest.windowId, i, 0, ClickType.QUICK_MOVE, Module.mc.player);
47 | this.timer.reset();
48 | if(mode.is("drop")) {
49 | Module.mc.playerController.windowClick(chest.windowId, i, 0, ClickType.THROW, Module.mc.player);
50 | this.timer.reset();
51 | }
52 | }
53 | }
54 | }
55 | }
56 | });
57 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/command/commands/Help.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.command.commands;
2 |
3 | import com.mojang.realmsclient.gui.ChatFormatting;
4 |
5 | import me.SaberAspect.Reference;
6 | import me.SaberAspect.SpectClient.client.command.Command;
7 | import me.SaberAspect.SpectClient.client.command.CommandManager;
8 | import me.SaberAspect.SpectClient.client.module.ModuleManager;
9 | import net.minecraft.util.text.TextFormatting;
10 |
11 | public class Help extends Command {
12 |
13 | public Help() {
14 | super("help", "helps lol.", "help", "h");
15 | }
16 |
17 | @Override
18 | public void onCommand(String[] args, String command) {
19 | ModuleManager.addChatMessage(ChatFormatting.BOLD + Reference.NAME + " " + Reference.VERSION + "!");
20 |
21 | ModuleManager.addChatMessage("prefix (p) - " + TextFormatting.ITALIC + "sets the command prefix. -> " + CommandManager.prefix + "prefix ");
22 |
23 | ModuleManager.addChatMessage("toggle (t) - " + TextFormatting.ITALIC + "toggles a module on or off. -> " + CommandManager.prefix + "toggle ");
24 |
25 | ModuleManager.addChatMessage("bind (b) - " + TextFormatting.ITALIC + "bind modules to specific keys. -> " + CommandManager.prefix + "bind | " + CommandManager.prefix + "bind clear");
26 |
27 | ModuleManager.addChatMessage("friend (f) - " + TextFormatting.ITALIC + "manage your friends. -> " + CommandManager.prefix + "friend list | " + CommandManager.prefix + "friend add | "
28 | + CommandManager.prefix + "friend remove | " + CommandManager.prefix + "friend clear");
29 |
30 | ModuleManager.addChatMessage(TextFormatting.DARK_RED + "(wip) " + TextFormatting.GRAY + "mobOwner (mo) - " + TextFormatting.ITALIC + "check the owner of a ridden mob. -> " + CommandManager.prefix + "mobOwner"); // broken atm if null.
31 |
32 | ModuleManager.addChatMessage("clip (c) - " + TextFormatting.ITALIC + "clip horrizontally or vertically through blocks. -> " + CommandManager.prefix + "clip h | " + CommandManager.prefix
33 | + "clip v ");
34 |
35 | ModuleManager.addChatMessage("vanish (v) - " + TextFormatting.ITALIC + "vanish ridden entities. - > " + CommandManager.prefix + "vanish");
36 |
37 | ModuleManager.addChatMessage(" Login (log) - " + TextFormatting.ITALIC + "Allows you to log into your account or another account through chat. -> " + CommandManager.prefix + "login ");
38 |
39 | }
40 |
41 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/module/modules/player/AutoReconnect.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.player;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.Event.Era;
7 | import me.SaberAspect.SpectClient.api.event.events.PacketEvent;
8 | import me.SaberAspect.SpectClient.api.util.world.JTimer;
9 | import me.SaberAspect.SpectClient.client.module.Category;
10 | import me.SaberAspect.SpectClient.client.module.Module;
11 | import me.SaberAspect.SpectClient.client.setting.settings.NumberSetting;
12 | import me.zero.alpine.listener.EventHandler;
13 | import me.zero.alpine.listener.Listener;
14 | import net.minecraft.client.Minecraft;
15 | import net.minecraft.client.multiplayer.GuiConnecting;
16 | import net.minecraft.network.EnumConnectionState;
17 | import net.minecraft.network.handshake.client.C00Handshake;
18 |
19 | public class AutoReconnect extends Module {
20 | public NumberSetting delay = new NumberSetting("delay", this, 5, 1, 20, 1);
21 |
22 | public AutoReconnect() {
23 | super("autoReconnect", "automatically reconnects to a server.", Keyboard.KEY_NONE, Category.PLAYER);
24 | this.addSettings(delay);
25 | }
26 | private String lastIp;
27 | private int lastPort;
28 | private boolean reconnect;
29 | private JTimer timer = new JTimer();
30 |
31 | @EventHandler
32 | private final Listener sendPacketEventPre = new Listener<>(event -> {
33 | if(event.getEra() == Era.PRE) {
34 | if(event.getPacket() instanceof C00Handshake) {
35 | final C00Handshake packet = (C00Handshake) event.getPacket();
36 | if(packet.getRequestedState() == EnumConnectionState.LOGIN) {
37 | this.lastIp = packet.ip;
38 | this.lastPort = packet.port;
39 | }
40 | }
41 | }
42 | if(event.getEra() == Era.POST) {
43 | if (this.lastIp != null && this.lastPort > 0 && this.reconnect) {
44 | if (this.timer.hasReached((long) delay.getValue())) {
45 | Minecraft.getMinecraft().displayGuiScreen(new GuiConnecting(null, Minecraft.getMinecraft(), this.lastIp, this.lastPort));
46 | this.timer.reset();
47 | this.reconnect = false;
48 | }
49 | }
50 | }
51 | });
52 |
53 | public void onEnable() {
54 | Main.EVENT_BUS.subscribe(this);
55 | }
56 |
57 | public void onDisbale() {
58 | Main.EVENT_BUS.unsubscribe(this);
59 | }
60 |
61 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/world/Location.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.world;
2 |
3 | import net.minecraft.block.Block;
4 | import net.minecraft.client.Minecraft;
5 | import net.minecraft.util.math.BlockPos;
6 |
7 | public class Location{
8 | private double x, y, z;
9 | private boolean ground;
10 |
11 | public Location(double x, double y, double z, boolean ground){
12 | this.x = x;
13 | this.y = y;
14 | this.z = z;
15 | this.ground = ground;
16 | }
17 |
18 | public Location(double x, double y, double z){
19 | this.x = x;
20 | this.y = y;
21 | this.z = z;
22 | this.ground = true;
23 | }
24 |
25 | public Location(int x, int y, int z){
26 | this.x = x;
27 | this.y = y;
28 | this.z = z;
29 | this.ground = true;
30 | }
31 |
32 | public Location add(int x, int y, int z){
33 | this.x += x;
34 | this.y += y;
35 | this.z += z;
36 | return this;
37 | }
38 |
39 | public Location add(double x, double y, double z){
40 | this.x += x;
41 | this.y += y;
42 | this.z += z;
43 | return this;
44 | }
45 |
46 | public Location subtract(int x, int y, int z){
47 | this.x -= x;
48 | this.y -= y;
49 | this.z -= z;
50 |
51 | return this;
52 | }
53 |
54 | public Location subtract(double x, double y, double z){
55 | this.x -= x;
56 | this.y -= y;
57 | this.z -= z;
58 |
59 | return this;
60 | }
61 |
62 | public Block getBlock(){
63 | return Minecraft.getMinecraft().world.getBlockState(this.toBlockPos()).getBlock();
64 | }
65 |
66 | public boolean isOnGround(){
67 | return this.ground;
68 | }
69 |
70 | public Location setOnGround(boolean ground){
71 | this.ground = ground;
72 | return this;
73 | }
74 |
75 | public double getX(){
76 | return x;
77 | }
78 |
79 | public Location setX(double x){
80 | this.x = x;
81 | return this;
82 | }
83 |
84 | public double getY(){
85 | return y;
86 | }
87 |
88 | public Location setY(double y){
89 | this.y = y;
90 | return this;
91 | }
92 |
93 | public double getZ(){
94 | return z;
95 | }
96 |
97 | public Location setZ(double z){
98 | this.z = z;
99 | return this;
100 | }
101 |
102 | public static Location fromBlockPos(BlockPos blockPos){
103 | return new Location(blockPos.getX(), blockPos.getY(), blockPos.getZ());
104 | }
105 |
106 | public BlockPos toBlockPos(){
107 | return new BlockPos(getX(), getY(), getZ());
108 | }
109 | }
110 |
111 |
--------------------------------------------------------------------------------
/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/SaberAspect/SpectClient/client/module/modules/exploits/PacketCancellor.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.module.modules.exploits;
2 |
3 | import org.lwjgl.input.Keyboard;
4 |
5 | import me.SaberAspect.Main;
6 | import me.SaberAspect.SpectClient.api.event.events.PacketEvent;
7 | import me.SaberAspect.SpectClient.client.module.Category;
8 | import me.SaberAspect.SpectClient.client.module.Module;
9 | import me.SaberAspect.SpectClient.client.setting.settings.BooleanSetting;
10 | import me.zero.alpine.listener.EventHandler;
11 | import me.zero.alpine.listener.Listener;
12 | import net.minecraft.network.play.client.CPacketEntityAction;
13 | import net.minecraft.network.play.client.CPacketInput;
14 | import net.minecraft.network.play.client.CPacketPlayer;
15 | import net.minecraft.network.play.client.CPacketUseEntity;
16 | import net.minecraft.network.play.client.CPacketVehicleMove;
17 |
18 | public class PacketCancellor extends Module {
19 | public BooleanSetting packetInput = new BooleanSetting("packetInput", this, true);
20 | public BooleanSetting packetPlayer = new BooleanSetting("packetPlayer", this, true);
21 | public BooleanSetting packetEntityAction = new BooleanSetting("packetEntityAction", this, true);
22 | public BooleanSetting packetUseEntity = new BooleanSetting("packetUseEntity", this, true);
23 | public BooleanSetting packetVehicleMove = new BooleanSetting("packetVehicleMove", this, true);
24 |
25 | public PacketCancellor() {
26 | super("packetCancellor", "cancels specific packets.", Keyboard.KEY_NONE, Category.EXPLOITS);
27 | this.addSettings(packetInput, packetPlayer, packetEntityAction, packetUseEntity, packetVehicleMove);
28 | }
29 | private int packets;
30 |
31 | @EventHandler
32 | private final Listener sendListener = new Listener<>(event -> {
33 | if ((packetInput.isEnabled() && event.getPacket() instanceof CPacketInput) || (packetPlayer.isEnabled() && event.getPacket() instanceof CPacketPlayer)
34 | || (packetEntityAction.isEnabled() && event.getPacket() instanceof CPacketEntityAction) || (packetUseEntity.isEnabled() && event.getPacket() instanceof CPacketUseEntity)
35 | || (packetVehicleMove.isEnabled() && event.getPacket() instanceof CPacketVehicleMove)) {
36 | event.cancel();
37 | packets++;
38 | }
39 | });
40 |
41 | public void onEnable() {
42 | Main.EVENT_BUS.subscribe(this);
43 | }
44 |
45 | public void onDisable() {
46 | Main.EVENT_BUS.unsubscribe(this);
47 | packets = 0;
48 | }
49 |
50 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/client/setting/settings/NumberSetting.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.client.setting.settings;
2 |
3 | import me.SaberAspect.Main;
4 | import me.SaberAspect.SpectClient.client.module.Module;
5 | import me.SaberAspect.SpectClient.client.setting.Setting;
6 |
7 | /*
8 | * Written by @SrgantMooMoo on 11/17/20.
9 | */
10 |
11 | public class NumberSetting extends Setting implements com.lukflug.panelstudio.settings.NumberSetting {
12 | public double value;
13 |
14 | public double minimun;
15 |
16 | public double maximum;
17 |
18 | public double increment;
19 |
20 | public NumberSetting(String name, Module parent, double value, double minimun, double maximum, double increment) {
21 | this.name = name;
22 | this.parent = parent;
23 | this.value = value;
24 | this.minimun = minimun;
25 | this.maximum = maximum;
26 | this.increment = increment;
27 | }
28 |
29 | public double getValue() {
30 | return this.value;
31 | }
32 |
33 | public void setValue(double value) {
34 | double precision = 1.0D / this.increment;
35 | //this.value = value;
36 | this.value = Math.round(Math.max(this.minimun, Math.min(this.maximum, value)) * precision) / precision;
37 |
38 | if(Main.saveLoad != null) {
39 | Main.saveLoad.save();
40 | }
41 | }
42 |
43 | public void increment(boolean positive) {
44 | setValue(getValue() + (positive ? 1 : -1) * increment);
45 | }
46 |
47 | public double getMinimun() {
48 | return this.minimun;
49 | }
50 |
51 | public void setMinimun(double minimun) {
52 | this.minimun = minimun;
53 | }
54 |
55 | public double getMaximum() {
56 | return this.maximum;
57 | }
58 |
59 | public void setMaximum(double maximum) {
60 | this.maximum = maximum;
61 | }
62 |
63 | public double getIncrement() {
64 | return this.increment;
65 | }
66 |
67 | public void setIncrement(double increment) {
68 | this.increment = increment;
69 | }
70 |
71 | @Override
72 | public double getMaximumValue() {
73 | return this.maximum;
74 | }
75 |
76 | @Override
77 | public double getMinimumValue() {
78 | return this.minimun;
79 | }
80 |
81 | @Override
82 | public double getNumber() {
83 | return this.value;
84 | }
85 |
86 | @Override
87 | public int getPrecision() {
88 | return 1;
89 | }
90 |
91 | @Override
92 | public void setNumber(double value) {
93 | double precision = 1.0D / this.increment;
94 | this.value = Math.round(Math.max(this.minimun, Math.min(this.maximum, value)) * precision) / precision;
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinEntityPlayerSP.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import net.minecraft.client.entity.AbstractClientPlayer;
4 | import net.minecraft.client.entity.EntityPlayerSP;
5 | import net.minecraft.entity.MoverType;
6 |
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.Redirect;
11 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
12 |
13 | import me.SaberAspect.Main;
14 | import me.SaberAspect.SpectClient.api.event.Event.Era;
15 | import me.SaberAspect.SpectClient.api.event.events.PlayerMotionUpdateEvent;
16 | import me.SaberAspect.SpectClient.api.event.events.PlayerMoveEvent;
17 | import me.SaberAspect.SpectClient.api.event.events.PlayerUpdateEvent;
18 |
19 | @Mixin(EntityPlayerSP.class)
20 | public abstract class MixinEntityPlayerSP extends AbstractClientPlayer {
21 |
22 | public MixinEntityPlayerSP() {
23 | super(null, null);
24 | }
25 |
26 | @Inject(method = "onUpdateWalkingPlayer", at = @At("HEAD"), cancellable = true)
27 | public void OnPreUpdateWalkingPlayer(CallbackInfo info) {
28 | PlayerMotionUpdateEvent event = new PlayerMotionUpdateEvent(Era.PRE);
29 | Main.EVENT_BUS.post(event);
30 | if (event.isCancelled())
31 | info.cancel();
32 | }
33 |
34 | @Inject(method = "onUpdateWalkingPlayer", at = @At("RETURN"), cancellable = true)
35 | public void OnPostUpdateWalkingPlayer(CallbackInfo p_Info) {
36 | PlayerMotionUpdateEvent event = new PlayerMotionUpdateEvent(Era.POST);
37 | Main.EVENT_BUS.post(event);
38 | if (event.isCancelled())
39 | p_Info.cancel();
40 | }
41 |
42 | @Inject(method = "onUpdate", at = @At("HEAD"), cancellable = true)
43 | public void onUpdate(CallbackInfo info) {
44 | PlayerUpdateEvent event = new PlayerUpdateEvent();
45 | Main.EVENT_BUS.post(event);
46 | if (event.isCancelled())
47 | info.cancel();
48 | }
49 |
50 | @Redirect(method = "move", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/entity/AbstractClientPlayer;move(Lnet/minecraft/entity/MoverType;DDD)V"))
51 | public void move(AbstractClientPlayer player, MoverType type, double x, double y, double z) {
52 | PlayerMoveEvent moveEvent = new PlayerMoveEvent(type, x, y, z);
53 | Main.EVENT_BUS.post(moveEvent);
54 | super.move(type, moveEvent.x, moveEvent.y, moveEvent.z);
55 | }
56 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/mixin/mixins/MixinNetworkManager.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.mixin.mixins;
2 |
3 | import io.netty.channel.ChannelHandlerContext;
4 | import me.SaberAspect.Main;
5 | import me.SaberAspect.SpectClient.api.event.events.NetworkPacketEvent;
6 | import me.SaberAspect.SpectClient.api.event.events.PacketEvent;
7 | import net.minecraft.network.NetworkManager;
8 | import net.minecraft.network.Packet;
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(NetworkManager.class)
15 | public class MixinNetworkManager {
16 |
17 | @Inject(method = "sendPacket(Lnet/minecraft/network/Packet;)V", at = @At("HEAD"), cancellable = true)
18 | private void onSendPacket(Packet> p_Packet, CallbackInfo callbackInfo) {
19 | NetworkPacketEvent event = new NetworkPacketEvent(p_Packet);
20 | Main.EVENT_BUS.post(event);
21 |
22 | if (event.isCancelled()) {
23 | callbackInfo.cancel();
24 | }
25 | }
26 |
27 | @Inject(method = "sendPacket(Lnet/minecraft/network/Packet;)V", at = @At("HEAD"), cancellable = true)
28 | private void preSendPacket(Packet> packet, CallbackInfo callbackInfo) {
29 | PacketEvent.Send event = new PacketEvent.Send(packet);
30 | Main.EVENT_BUS.post(event);
31 |
32 | if (event.isCancelled()) {
33 | callbackInfo.cancel();
34 | }
35 | }
36 |
37 | @Inject(method = "channelRead0", at = @At("HEAD"), cancellable = true)
38 | private void preChannelRead(ChannelHandlerContext context, Packet> packet, CallbackInfo callbackInfo) {
39 | PacketEvent.Receive event = new PacketEvent.Receive(packet);
40 | Main.EVENT_BUS.post(event);
41 |
42 | if (event.isCancelled()) {
43 | callbackInfo.cancel();
44 | }
45 | }
46 |
47 | @Inject(method = "sendPacket(Lnet/minecraft/network/Packet;)V", at = @At("TAIL"), cancellable = true)
48 | private void postSendPacket(Packet> packet, CallbackInfo callbackInfo) {
49 | PacketEvent.PostSend event = new PacketEvent.PostSend(packet);
50 | Main.EVENT_BUS.post(event);
51 |
52 | if (event.isCancelled()) {
53 | callbackInfo.cancel();
54 | }
55 | }
56 |
57 | @Inject(method = "channelRead0", at = @At("TAIL"), cancellable = true)
58 | private void postChannelRead(ChannelHandlerContext context, Packet> packet, CallbackInfo callbackInfo) {
59 | PacketEvent.PostReceive event = new PacketEvent.PostReceive(packet);
60 | Main.EVENT_BUS.post(event);
61 |
62 | if (event.isCancelled()) {
63 | callbackInfo.cancel();
64 | }
65 | }
66 | }
--------------------------------------------------------------------------------
/src/main/java/me/SaberAspect/SpectClient/api/util/world/EntityUtils.java:
--------------------------------------------------------------------------------
1 | package me.SaberAspect.SpectClient.api.util.world;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | import net.minecraft.client.Minecraft;
7 | import net.minecraft.entity.Entity;
8 | import net.minecraft.entity.monster.EntityGolem;
9 | import net.minecraft.entity.passive.EntityAmbientCreature;
10 | import net.minecraft.entity.passive.EntityAnimal;
11 | import net.minecraft.entity.passive.EntityVillager;
12 | import net.minecraft.entity.passive.EntityWaterMob;
13 | import net.minecraft.entity.player.EntityPlayer;
14 | import net.minecraft.util.math.AxisAlignedBB;
15 | import net.minecraft.util.math.MathHelper;
16 |
17 | public class EntityUtils {
18 |
19 | private static Minecraft mc = Minecraft.getMinecraft();
20 |
21 | public static List getLoadedEntities() {
22 | return mc.world.getEntitiesWithinAABBExcludingEntity(
23 | null, new AxisAlignedBB(
24 | mc.player.posX - 128, 0,
25 | mc.player.posZ - 128,
26 | mc.player.posX + 128, 256,
27 | mc.player.posZ + 128));
28 | }
29 |
30 | public static List getPlayerEntites() {
31 | List entities = new ArrayList<>();
32 | for (Entity e: getLoadedEntities()) if (e instanceof EntityPlayer) entities.add((EntityPlayer)e);
33 | return entities;
34 | }
35 |
36 | public static boolean isAnimal(Entity e) {
37 | return e instanceof EntityAnimal || e instanceof EntityAmbientCreature || e instanceof EntityWaterMob ||
38 | e instanceof EntityGolem || e instanceof EntityVillager;
39 | }
40 |
41 |
42 |
43 | public static void facePos(double x, double y, double z) {
44 | double diffX = x - mc.player.posX;
45 | double diffY = y - (mc.player.posY + mc.player.getEyeHeight());
46 | double diffZ = z - mc.player.posZ;
47 |
48 | double diffXZ = Math.sqrt(diffX * diffX + diffZ * diffZ);
49 |
50 | float yaw = (float)Math.toDegrees(Math.atan2(diffZ, diffX)) - 90F;
51 | float pitch = (float)-Math.toDegrees(Math.atan2(diffY, diffXZ));
52 |
53 | mc.player.rotationYaw += MathHelper.wrapDegrees(yaw - mc.player.rotationYaw);
54 | mc.player.rotationPitch += MathHelper.wrapDegrees(pitch - mc.player.rotationPitch);
55 | }
56 |
57 | public static int getDirectionFacing(Entity e) {
58 | int yaw = (int)e.rotationYaw;
59 |
60 | if (yaw > 180) while(yaw > 180) yaw -= 360;
61 | else if (yaw < -180) while(yaw < -180) yaw += 360;
62 |
63 | if (yaw >= 135 || yaw <= -135) return 0;
64 | if (yaw <= -45 && yaw >= -135) return 1;
65 | if (yaw <= 45 && yaw >= -45) return 2;
66 | if (yaw <= 135 && yaw >= 45) return 3;
67 |
68 | return 0;
69 | }
70 |
71 | }
--------------------------------------------------------------------------------