├── settings.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── src └── main │ ├── java │ └── gq │ │ └── vapulite │ │ ├── Vapu │ │ ├── VapeClickGui │ │ │ ├── ClickType.java │ │ │ ├── Config.java │ │ │ └── utils │ │ │ │ ├── Tessellation.java │ │ │ │ ├── ExpandingTess.java │ │ │ │ └── BasicTess.java │ │ ├── utils │ │ │ ├── Misc.java │ │ │ ├── ColorUtils.java │ │ │ ├── TimerUtil.java │ │ │ ├── Tool.java │ │ │ ├── ForgePlugin.java │ │ │ ├── Helper.java │ │ │ ├── ModList.java │ │ │ ├── Colors.java │ │ │ ├── ClassNodeUtils.java │ │ │ ├── ClientUtil.java │ │ │ ├── ChatUtil.java │ │ │ └── ProductPlugin.java │ │ ├── value │ │ │ ├── Option.java │ │ │ ├── Value.java │ │ │ ├── Numbers.java │ │ │ ├── Mode.java │ │ │ └── NewMode.java │ │ ├── modules │ │ │ ├── other │ │ │ │ └── NoCommand.java │ │ │ ├── render │ │ │ │ ├── StateMessage.java │ │ │ │ ├── ClickGUI.java │ │ │ │ ├── ChineseMode.java │ │ │ │ ├── FullBright.java │ │ │ │ ├── Health.java │ │ │ │ ├── ESP.java │ │ │ │ ├── TargetHUD.java │ │ │ │ └── HUD.java │ │ │ ├── Config │ │ │ │ ├── IGN.java │ │ │ │ ├── LoadConfig.java │ │ │ │ ├── SaveConfig.java │ │ │ │ └── Uninject.java │ │ │ ├── movement │ │ │ │ ├── Spider.java │ │ │ │ ├── Sprint.java │ │ │ │ ├── Speed.java │ │ │ │ ├── NoSlowDown.java │ │ │ │ └── InvMove.java │ │ │ ├── player │ │ │ │ ├── ChatBypass.java │ │ │ │ ├── Timer.java │ │ │ │ └── AutoTools.java │ │ │ ├── combat │ │ │ │ ├── AutoBlock.java │ │ │ │ ├── AntiBot.java │ │ │ │ ├── Velocity.java │ │ │ │ ├── AutoClicker.java │ │ │ │ ├── BowAimBot.java │ │ │ │ └── Aimbot.java │ │ │ ├── world │ │ │ │ ├── FastPlace.java │ │ │ │ ├── FuckServer.java │ │ │ │ ├── HidomocdTimer.java │ │ │ │ ├── NoFall.java │ │ │ │ └── MurderMystery.java │ │ │ └── Module.java │ │ ├── Value.java │ │ ├── gui │ │ │ ├── components │ │ │ │ ├── Component.java │ │ │ │ └── SubWindow.java │ │ │ ├── UI │ │ │ │ ├── Button.java │ │ │ │ ├── Panel.java │ │ │ │ └── BindClickGui.java │ │ │ ├── BindScreen.java │ │ │ └── ClickGUI.java │ │ ├── ForgeMod.java │ │ ├── ModuleType.java │ │ └── ClickUi │ │ │ ├── KeyBindButton.java │ │ │ └── ClickUi.java │ │ ├── gl │ │ ├── GLenum.java │ │ ├── GLColor.java │ │ ├── GLClientState.java │ │ └── GLUtils.java │ │ ├── VapuMod │ │ ├── event │ │ │ ├── EventType.java │ │ │ ├── impl │ │ │ │ ├── TickEvent.java │ │ │ │ ├── OverlayEvent.java │ │ │ │ ├── ServerJoinEvent.java │ │ │ │ ├── WorldLoadEvent.java │ │ │ │ ├── SlowdownEvent.java │ │ │ │ ├── Render3DEvent.java │ │ │ │ ├── KeycodeEvent.java │ │ │ │ ├── ChatEvent.java │ │ │ │ ├── SafeWalkEvent.java │ │ │ │ ├── LightningEvent.java │ │ │ │ ├── MouseEvent.java │ │ │ │ ├── MoveRawEvent.java │ │ │ │ ├── PacketEvent.java │ │ │ │ ├── CollideEvent.java │ │ │ │ ├── UpdateEvent.java │ │ │ │ ├── CollisionEvent.java │ │ │ │ └── MotionEvent.java │ │ │ └── Event.java │ │ ├── EventHandler.java │ │ ├── PacketReceiveEvent.java │ │ ├── PacketSendEvent.java │ │ ├── Stopwatch.java │ │ ├── EventMove.java │ │ └── PreUpdateEvent.java │ │ ├── math │ │ ├── Degree.java │ │ ├── MD5Utils.java │ │ ├── Vec4f.java │ │ ├── Vec2f.java │ │ └── Vec3f.java │ │ ├── eventapi │ │ ├── types │ │ │ ├── EventType.java │ │ │ └── Priority.java │ │ ├── events │ │ │ ├── Event.java │ │ │ ├── Typed.java │ │ │ ├── Cancellable.java │ │ │ ├── callables │ │ │ │ ├── EventTyped.java │ │ │ │ └── EventCancellable.java │ │ │ └── EventStoppable.java │ │ ├── EventTarget.java │ │ └── EventAPI.java │ │ ├── render │ │ ├── ColorUtils.java │ │ ├── Colors2.java │ │ ├── Tessellation.java │ │ ├── ExpandingTess.java │ │ ├── TranslateUtil.java │ │ ├── Colors.java │ │ ├── AnimationUtil.java │ │ └── BasicTess.java │ │ ├── values │ │ ├── type │ │ │ ├── Bool.java │ │ │ ├── Num.java │ │ │ ├── Mode.java │ │ │ └── NewMode.java │ │ └── Value.java │ │ ├── xray │ │ ├── XRayBlock.java │ │ └── XRayData.java │ │ ├── VapuAttachPoint.java │ │ ├── utils │ │ ├── AnimationUtils.java │ │ └── Tool.java │ │ ├── Manager │ │ ├── NotificationManager.java │ │ ├── ModuleManager.java │ │ └── FileManager.java │ │ ├── Vapuloader.java │ │ ├── font │ │ ├── FontLoaders.java │ │ └── Utils.java │ │ └── command │ │ └── WaterMark.java │ └── resources │ ├── assets │ └── minecraft │ │ ├── font │ │ ├── NovICON.ttf │ │ └── AlibabaSans-Regular.otf │ │ ├── LuneClientGui │ │ ├── Lune.png │ │ ├── Cloud.png │ │ ├── Combat.png │ │ ├── Player.png │ │ ├── Render.png │ │ ├── World.png │ │ ├── current.png │ │ ├── Movement.png │ │ └── arraylistshadow.png │ │ └── vapeclickgui │ │ ├── back.png │ │ ├── home.png │ │ ├── config.png │ │ ├── friends.png │ │ ├── module.png │ │ └── settings.png │ └── mcmod.info ├── README.md ├── .gitignore ├── .github └── workflows │ ├── issues-closer.yml │ └── build.yml └── gradlew.bat /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'VapuLite' 2 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx5g -Xms5g -XX:+UseG1GC 2 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/VapeClickGui/ClickType.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.VapeClickGui; 2 | 3 | public enum ClickType { 4 | Home 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/font/NovICON.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/font/NovICON.ttf -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/LuneClientGui/Lune.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/LuneClientGui/Lune.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/vapeclickgui/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/vapeclickgui/back.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/vapeclickgui/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/vapeclickgui/home.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/LuneClientGui/Cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/LuneClientGui/Cloud.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/LuneClientGui/Combat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/LuneClientGui/Combat.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/LuneClientGui/Player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/LuneClientGui/Player.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/LuneClientGui/Render.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/LuneClientGui/Render.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/LuneClientGui/World.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/LuneClientGui/World.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/LuneClientGui/current.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/LuneClientGui/current.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/vapeclickgui/config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/vapeclickgui/config.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/vapeclickgui/friends.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/vapeclickgui/friends.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/vapeclickgui/module.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/vapeclickgui/module.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/vapeclickgui/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/vapeclickgui/settings.png -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/gl/GLenum.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.gl; 2 | 3 | public interface GLenum { 4 | public String getName(); 5 | 6 | public int getCap(); 7 | } 8 | 9 | -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/LuneClientGui/Movement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/LuneClientGui/Movement.png -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/font/AlibabaSans-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/font/AlibabaSans-Regular.otf -------------------------------------------------------------------------------- /src/main/resources/assets/minecraft/LuneClientGui/arraylistshadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zhicheng233/VapuLite/HEAD/src/main/resources/assets/minecraft/LuneClientGui/arraylistshadow.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # VapuLite 2 | **Vapu is not Vape**\ 3 | a free inject cheat for Minecraft with Forge 4 | 5 | # Build 6 | gradlew build 7 | 8 | # License 9 | This project is subject to the [GNU General Public License v3.0](LICENSE) -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/EventType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event; 5 | 6 | public enum EventType { 7 | Pre, 8 | Post; 9 | 10 | } 11 | 12 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/math/Degree.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.math; 2 | 3 | public class Degree { 4 | 5 | public String text; 6 | public int type; 7 | 8 | public Degree(String s, int t){ 9 | text = s; 10 | type = t; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/TickEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class TickEvent 9 | extends Event { 10 | } 11 | 12 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/OverlayEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class OverlayEvent 9 | extends Event { 10 | } 11 | 12 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/ServerJoinEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class ServerJoinEvent 9 | extends Event { 10 | } 11 | 12 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/WorldLoadEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class WorldLoadEvent 9 | extends Event { 10 | } 11 | 12 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Mar 24 13:25:08 CST 2020 2 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip 3 | distributionBase=GRADLE_USER_HOME 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/eventapi/types/EventType.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.eventapi.types; 2 | 3 | /** 4 | * Types that can be used for typed events. 5 | * 6 | * @author DarkMagician6 7 | * @since August 27, 2013 8 | */ 9 | public enum EventType { 10 | PRE, 11 | POST, 12 | RECEIVE, 13 | SEND; 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # eclipse 2 | eclipse 3 | bin 4 | *.launch 5 | .settings 6 | .metadata 7 | .classpath 8 | .project 9 | 10 | # idea 11 | out 12 | classes 13 | *.ipr 14 | *.iws 15 | *.iml 16 | .idea 17 | 18 | # gradle 19 | build 20 | .gradle 21 | 22 | #Netbeans 23 | .nb-gradle 24 | .nb-gradle-properties 25 | 26 | # other 27 | run 28 | .DS_Store 29 | Thumbs.db -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/utils/Misc.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.utils; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import net.minecraft.client.gui.ScaledResolution; 5 | 6 | public final class Misc { 7 | public static ScaledResolution getScaledResolution() { 8 | return new ScaledResolution(Minecraft.getMinecraft()); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/eventapi/events/Event.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.eventapi.events; 2 | 3 | /** 4 | * The most basic form of an event. You have to implement this interface in 5 | * order for the EventAPI to recognize the event. 6 | * 7 | * @author DarkMagician6 8 | * @since July 30, 2013 9 | */ 10 | public interface Event { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/resources/mcmod.info: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "modid": "VapuLite", 4 | "name": "VapuLite", 5 | "description": "VapuLite Client", 6 | "version": "${version}", 7 | "mcversion": "${mcversion}", 8 | "url": "", 9 | "updateUrl": "", 10 | "authorList": ["Vapu Client Community"], 11 | "credits": "Vapu Client Team", 12 | "logoFile": "", 13 | "screenshots": [], 14 | "dependencies": [] 15 | } 16 | ] 17 | -------------------------------------------------------------------------------- /.github/workflows/issues-closer.yml: -------------------------------------------------------------------------------- 1 | name: no one care what do you think about this 2 | on: 3 | issues: 4 | types: [opened] 5 | jobs: 6 | fakeCrackMeAAAAA: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Close Issue 10 | uses: peter-evans/close-issue@v1 11 | with: 12 | comment: | 13 | I don't fucking care 14 | take it or leave it 15 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/utils/ColorUtils.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.utils; 2 | 3 | import java.awt.*; 4 | 5 | public class ColorUtils { 6 | public static int rainbow(int delay){ 7 | double rainbowState = Math.ceil((System.currentTimeMillis() + delay) / 20); 8 | rainbowState %= 360; 9 | return Color.getHSBColor((float) (rainbowState / 360f), 0.8f, 0.7f).getRGB(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/SlowdownEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class SlowdownEvent 9 | extends Event { 10 | public Type type; 11 | 12 | public SlowdownEvent(Type type) { 13 | this.type = type; 14 | } 15 | 16 | public static enum Type { 17 | Sprinting; 18 | 19 | } 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/EventHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0_132. 3 | */ 4 | package gq.vapulite.VapuMod; 5 | 6 | import java.lang.annotation.ElementType; 7 | import java.lang.annotation.Retention; 8 | import java.lang.annotation.RetentionPolicy; 9 | import java.lang.annotation.Target; 10 | 11 | @Retention(value = RetentionPolicy.RUNTIME) 12 | @Target(value = {ElementType.METHOD}) 13 | public @interface EventHandler { 14 | byte priority() default 1; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/value/Option.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.value; 2 | 3 | public class Option 4 | extends Value { 5 | public static int animx = 0; 6 | public Option(String displayName, String name, V enabled) { 7 | super(displayName, name); 8 | this.setValue(enabled); 9 | } 10 | public int getAnimx(){ 11 | return animx; 12 | } 13 | public void setAnimx(int animx){ 14 | Option.animx = animx; 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/render/ColorUtils.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.render; 2 | 3 | import java.awt.*; 4 | 5 | public class ColorUtils { 6 | 7 | public static int reAlpha(int color, float alpha) { 8 | Color c = new Color(color); 9 | float r = 0.003921569F * (float) c.getRed(); 10 | float g = 0.003921569F * (float) c.getGreen(); 11 | float b = 0.003921569F * (float) c.getBlue(); 12 | return (new Color(r, g, b, alpha)).getRGB(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/values/type/Bool.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.values.type; 2 | 3 | import gq.vapulite.values.Value; 4 | 5 | public class Bool extends Value { 6 | public static int animx = 0; 7 | public Bool(String name,B value){ 8 | super(name); 9 | this.setValue(value); 10 | } 11 | 12 | public int getAnimx(){ 13 | return animx; 14 | } 15 | 16 | public void setAnimx(int animx) { 17 | Bool.animx = animx; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/gl/GLColor.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.gl; 2 | 3 | import org.lwjgl.opengl.GL11; 4 | 5 | public class GLColor { 6 | public static void color(int color) { 7 | float alpha = (float)(color >> 24 & 255) / 255.0f; 8 | float red = (float)(color >> 16 & 255) / 255.0f; 9 | float green = (float)(color >> 8 & 255) / 255.0f; 10 | float blue = (float)(color & 255) / 255.0f; 11 | GL11.glColor4f(red, green, blue, alpha); 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/Render3DEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class Render3DEvent 9 | extends Event { 10 | private final float partialTicks; 11 | 12 | public Render3DEvent(float partialTicks) { 13 | this.partialTicks = partialTicks; 14 | } 15 | 16 | public float getPartialTicks() { 17 | return this.partialTicks; 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/values/type/Num.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.values.type; 2 | 3 | import gq.vapulite.values.Value; 4 | public class Num extends Value { 5 | N max,min; 6 | public Num(String name, N val, N min, N max) { 7 | super(name); 8 | this.setValue(val); 9 | this.max = max; 10 | this.min = min; 11 | } 12 | 13 | public N getMax(){ 14 | return this.max; 15 | } 16 | public N getMin(){ 17 | return this.min; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/other/NoCommand.java: -------------------------------------------------------------------------------- 1 | //TODO: NoCommand 2 | package gq.vapulite.Vapu.modules.other; 3 | 4 | import gq.vapulite.Vapu.ModuleType; 5 | import gq.vapulite.Vapu.modules.Module; 6 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 7 | import org.lwjgl.input.Keyboard; 8 | 9 | public class NoCommand extends Module { 10 | public NoCommand() { 11 | super("NoCommand", Keyboard.KEY_NONE, ModuleType.Other, "No command."); 12 | Chinese=("没有指令"); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/PacketReceiveEvent.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.VapuMod; 2 | 3 | import net.minecraft.network.Packet; 4 | import gq.vapulite.eventapi.events.callables.EventCancellable; 5 | 6 | public class PacketReceiveEvent extends EventCancellable { 7 | public Packet packet; 8 | public PacketReceiveEvent(Packet packet) { 9 | this.packet = packet; 10 | } 11 | 12 | public Packet getPacket() { 13 | return packet; 14 | } 15 | 16 | public void setPacket(Packet packet) { 17 | this.packet = packet; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/KeycodeEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class KeycodeEvent 9 | extends Event { 10 | public int key; 11 | 12 | public KeycodeEvent(int key) { 13 | this.key = key; 14 | } 15 | 16 | public int getKey() { 17 | return this.key; 18 | } 19 | 20 | public void setKey(int key) { 21 | this.key = key; 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/ChatEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class ChatEvent 9 | extends Event { 10 | public String message; 11 | 12 | public ChatEvent(String message) { 13 | this.message = message; 14 | } 15 | 16 | public String getMessage() { 17 | return this.message; 18 | } 19 | 20 | public void setMessage(String message) { 21 | this.message = message; 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/xray/XRayBlock.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.xray; 2 | 3 | import net.minecraft.util.BlockPos; 4 | 5 | public class XRayBlock { 6 | private final BlockPos blockPos; 7 | private final XRayData xRayData; 8 | 9 | public XRayBlock(BlockPos blockPos, XRayData xRayData) { 10 | this.blockPos = blockPos; 11 | this.xRayData = xRayData; 12 | } 13 | 14 | public BlockPos getBlockPos() { 15 | return this.blockPos; 16 | } 17 | 18 | public XRayData getxRayData() { 19 | return this.xRayData; 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/Value.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu; 2 | 3 | public class Value { 4 | 5 | private String valueName; 6 | private T valueObject; 7 | 8 | public Value(String valueName, T valueObject) { 9 | this.valueName = valueName; 10 | this.valueObject = valueObject; 11 | } 12 | 13 | public String getValueName() { 14 | return valueName; 15 | } 16 | 17 | public T getObject() { 18 | return valueObject; 19 | } 20 | 21 | public void setObject(T valueObject) { 22 | this.valueObject = valueObject; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/eventapi/EventTarget.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.eventapi; 2 | 3 | import gq.vapulite.eventapi.types.Priority; 4 | 5 | import java.lang.annotation.*; 6 | 7 | /** 8 | * Marks a method so that the EventManager knows that it should be registered. 9 | * The priority of the method is also set with this. 10 | * 11 | * @author DarkMagician6 12 | * @see Priority 13 | * @since July 30, 2013 14 | */ 15 | @Documented 16 | @Target(ElementType.METHOD) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | public @interface EventTarget { 19 | 20 | byte value() default Priority.MEDIUM; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/math/MD5Utils.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.math; 2 | 3 | import java.math.BigInteger; 4 | import java.security.MessageDigest; 5 | import java.security.NoSuchAlgorithmException; 6 | 7 | public class MD5Utils { 8 | public static String encode(String plainText) { 9 | byte[] secretBytes = null; 10 | try { 11 | secretBytes = MessageDigest.getInstance("md5").digest(plainText.getBytes()); 12 | } catch (NoSuchAlgorithmException e) { 13 | e.printStackTrace(); 14 | } 15 | return new BigInteger(1, secretBytes).toString(16); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/SafeWalkEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class SafeWalkEvent 9 | extends Event { 10 | public boolean walkSafely; 11 | 12 | public SafeWalkEvent(boolean walkSafely) { 13 | this.walkSafely = walkSafely; 14 | } 15 | 16 | public boolean isWalkSafely() { 17 | return this.walkSafely; 18 | } 19 | 20 | public void setWalkSafely(boolean walkSafely) { 21 | this.walkSafely = walkSafely; 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/eventapi/events/Typed.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.eventapi.events; 2 | 3 | /** 4 | * Simple interface that should be implemented in typed events. A typed event is 5 | * an event that can be called on multiple places with the type defining where 6 | * it was called. 7 | *

8 | * The type should be defined in the constructor when the new instance of the 9 | * event is created. 10 | * 11 | * @author DarkMagician6 12 | * @since August 27, 2013 13 | */ 14 | public interface Typed { 15 | /** 16 | * Gets the current type of the event. 17 | * 18 | * @return The type ID of the event. 19 | */ 20 | byte getType(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/render/StateMessage.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.render; 2 | 3 | import org.lwjgl.input.Keyboard; 4 | import gq.vapulite.Vapu.Client; 5 | import gq.vapulite.Vapu.ModuleType; 6 | import gq.vapulite.Vapu.modules.Module; 7 | 8 | public class StateMessage extends Module { 9 | public StateMessage() { 10 | super("NoStateMessage", Keyboard.KEY_NONE, ModuleType.Render,"Not Show Modules State info"); 11 | Chinese="无开关信息"; 12 | } 13 | 14 | public void enable() { 15 | Client.MessageON = true; 16 | } 17 | 18 | public void disable(){ 19 | Client.MessageON = false; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/eventapi/events/Cancellable.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.eventapi.events; 2 | 3 | /** 4 | * Simple interface which should be implemented in events that can be cancelled. 5 | * 6 | * @author DarkMagician6 7 | * @since August 27, 2013 8 | */ 9 | public interface Cancellable { 10 | 11 | /** 12 | * Gets the current cancelled state of the event. 13 | * 14 | * @return True if the event is cancelled. 15 | */ 16 | boolean isCancelled(); 17 | 18 | /** 19 | * Sets the cancelled state of the event. 20 | * 21 | * @param state Whether the event should be cancelled or not. 22 | */ 23 | void setCancelled(boolean state); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/render/ClickGUI.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.render; 2 | 3 | import gq.vapulite.Vapu.ClickUi.ClickUi; 4 | import gq.vapulite.Vapu.VapeClickGui.VapeClickGui; 5 | import org.lwjgl.input.Keyboard; 6 | 7 | import gq.vapulite.Vapu.ModuleType; 8 | import gq.vapulite.Vapu.modules.Module; 9 | 10 | public class ClickGUI extends Module { 11 | 12 | public ClickGUI() { 13 | super("ClickGUI", Keyboard.KEY_RSHIFT, ModuleType.Render,"Open ClickGui"); 14 | Chinese="点击GUI"; 15 | // TODO Auto-generated constructor stub 16 | } 17 | 18 | public void toggle() { 19 | mc.displayGuiScreen(new VapeClickGui()); 20 | this.setState(false); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/gui/components/Component.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.gui.components; 2 | 3 | import net.minecraft.client.Minecraft; 4 | 5 | public abstract class Component { 6 | protected final Minecraft mc = Minecraft.getMinecraft(); 7 | public int getWidth() {return 0;} 8 | public int getHeight() {return 0;} 9 | public abstract void drawComponent(int mouseX, int mouseY, float partialTicks); 10 | public void keyTyped(char typedChar, int keyCode) {} 11 | public void mouseClicked(int mouseX, int mouseY, int mouseButton) {} 12 | public void mouseReleased(int mouseX, int mouseY, int state) {} 13 | public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) {} 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/LightningEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class LightningEvent 9 | extends Event { 10 | public double y; 11 | public double x; 12 | public double z; 13 | 14 | public LightningEvent(double y, double x, double z) { 15 | this.y = y; 16 | this.z = z; 17 | this.x = x; 18 | } 19 | 20 | public double getX() { 21 | return this.x; 22 | } 23 | 24 | public double getY() { 25 | return this.y; 26 | } 27 | 28 | public double getZ() { 29 | return this.z; 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/Config/IGN.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.Config; 2 | 3 | import gq.vapulite.Vapu.ModuleType; 4 | import gq.vapulite.Vapu.modules.Module; 5 | 6 | import java.awt.*; 7 | import java.awt.datatransfer.StringSelection; 8 | 9 | import static org.lwjgl.input.Keyboard.KEY_NONE; 10 | 11 | public class IGN extends Module { 12 | public IGN() { 13 | super("CopyName", KEY_NONE, ModuleType.Config,"copy your name for party"); 14 | Chinese="复制名字"; 15 | NoToggle=true; 16 | } 17 | 18 | public void enable() { 19 | Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(mc.thePlayer.getName()), null); 20 | state=false; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/utils/TimerUtil.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.utils; 2 | 3 | public class TimerUtil { 4 | private long lastMS; 5 | 6 | private long getCurrentMS() { 7 | return System.nanoTime() / 1000000L; 8 | } 9 | 10 | public boolean hasReached(double milliseconds) { 11 | return (double) (this.getCurrentMS() - this.lastMS) >= milliseconds; 12 | } 13 | 14 | public void reset() { 15 | this.lastMS = this.getCurrentMS(); 16 | } 17 | 18 | public boolean delay(float milliSec) { 19 | return (float) (this.getTime() - this.lastMS) >= milliSec; 20 | } 21 | 22 | public long getTime() { 23 | return System.nanoTime() / 1000000L; 24 | } 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/movement/Spider.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.movement; 2 | 3 | import gq.vapulite.Vapu.ModuleType; 4 | import gq.vapulite.Vapu.modules.Module; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.TickEvent; 7 | import org.lwjgl.input.Keyboard; 8 | 9 | public class Spider extends Module { 10 | public Spider() { 11 | super("Spider", Keyboard.KEY_NONE, ModuleType.Movement,""); 12 | Chinese="蜘蛛侠"; 13 | } 14 | @SubscribeEvent 15 | public void onTick(TickEvent event) { 16 | if (!mc.thePlayer.isOnLadder() && mc.thePlayer.motionY < 0.2) { 17 | mc.thePlayer.motionY = 0.2; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/render/ChineseMode.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.render; 2 | 3 | import gq.vapulite.Vapu.Client; 4 | import gq.vapulite.Vapu.ModuleType; 5 | import gq.vapulite.Vapu.modules.Module; 6 | import org.lwjgl.input.Keyboard; 7 | 8 | public class ChineseMode extends Module { 9 | public ChineseMode() { 10 | super("中文", Keyboard.KEY_NONE, ModuleType.Combat,""); 11 | Chinese="ChineseMode"; 12 | } 13 | 14 | 15 | @Override 16 | public void enable(){ 17 | Client.CHINESE = true; 18 | this.mc.thePlayer.closeScreen(); 19 | } 20 | 21 | @Override 22 | public void disable(){ 23 | Client.CHINESE = false; 24 | this.mc.thePlayer.closeScreen(); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/utils/Tool.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.utils; 2 | 3 | import org.apache.commons.lang3.exception.ExceptionUtils; 4 | import org.apache.logging.log4j.Level; 5 | import org.apache.logging.log4j.LogManager; 6 | 7 | public class Tool { 8 | public static void displayChatMessage(String message) { 9 | Helper.sendMessage(message); 10 | } 11 | 12 | public static void log(String s, Object... args) { 13 | LogManager.getLogger().log(Level.INFO, String.format(s, args)); 14 | } 15 | 16 | public static void logerror(String s, Object... args) { 17 | LogManager.getLogger().log(Level.ERROR, String.format(s, args)); 18 | } 19 | 20 | public static void logException(Throwable e) { 21 | logerror(ExceptionUtils.getStackTrace(e)); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/player/ChatBypass.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.player; 2 | 3 | import gq.vapulite.Vapu.Client; 4 | import gq.vapulite.Vapu.ModuleType; 5 | import gq.vapulite.Vapu.modules.Module; 6 | import gq.vapulite.Vapu.utils.Helper; 7 | import org.lwjgl.input.Keyboard; 8 | 9 | public class ChatBypass extends Module { 10 | public ChatBypass() { 11 | super("ChatBypass", Keyboard.KEY_NONE, ModuleType.Player,""); 12 | Chinese="聊天绕过"; 13 | } 14 | 15 | @Override 16 | public void enable() { 17 | Helper.sendMessage("使用/cp 发送ChatBypassed消息"); 18 | Client.ChatBypass = true; 19 | } 20 | 21 | @Override 22 | public void disable() { 23 | Client.ChatBypass = false; 24 | } 25 | 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/eventapi/events/callables/EventTyped.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.eventapi.events.callables; 2 | 3 | import gq.vapulite.eventapi.events.Event; 4 | import gq.vapulite.eventapi.events.Typed; 5 | 6 | /** 7 | * Abstract example implementation of the Typed interface. 8 | * 9 | * @author DarkMagician6 10 | * @since August 27, 2013 11 | */ 12 | public abstract class EventTyped implements Event, Typed { 13 | 14 | private final byte type; 15 | 16 | /** 17 | * Sets the type of the event when it's called. 18 | * 19 | * @param eventType The type ID of the event. 20 | */ 21 | protected EventTyped(byte eventType) { 22 | type = eventType; 23 | } 24 | 25 | /** 26 | * @see Typed.getType 27 | */ 28 | @Override 29 | public byte getType() { 30 | return type; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/Event.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event; 5 | 6 | public abstract class Event { 7 | public boolean cancelled; 8 | private EventType type; 9 | 10 | public boolean isPre() { 11 | return this.type == EventType.Pre; 12 | } 13 | 14 | public boolean isPost() { 15 | return this.type == EventType.Post; 16 | } 17 | 18 | public void setCancelled(boolean bool) { 19 | this.cancelled = bool; 20 | } 21 | 22 | public boolean isCancelled() { 23 | return this.cancelled; 24 | } 25 | 26 | public EventType getType() { 27 | return this.type; 28 | } 29 | 30 | public void setType(EventType type) { 31 | this.type = type; 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/movement/Sprint.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.movement; 2 | 3 | import gq.vapulite.Vapu.ModuleType; 4 | import gq.vapulite.Vapu.modules.Module; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.TickEvent; 7 | import org.lwjgl.input.Keyboard; 8 | 9 | public class Sprint extends Module { 10 | public Sprint() { 11 | super("Sprint", Keyboard.KEY_R, ModuleType.Movement,"Force sprint when you moving"); 12 | Chinese="强制疾跑"; 13 | } 14 | 15 | @SubscribeEvent 16 | public void onUpdate(TickEvent.PlayerTickEvent event) { 17 | if(!mc.thePlayer.isCollidedHorizontally && mc.thePlayer.moveForward > 0) { 18 | mc.thePlayer.setSprinting(true); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/ForgeMod.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu; 2 | 3 | import net.minecraftforge.fml.common.Mod; 4 | import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; 5 | import net.minecraftforge.fml.relauncher.Side; 6 | import net.minecraftforge.fml.relauncher.SideOnly; 7 | 8 | import java.io.IOException; 9 | 10 | @Mod(modid="VapuLite", name="VapuLite", version="1.5", acceptedMinecraftVersions="[1.8.9]") 11 | public class ForgeMod { 12 | @SideOnly(Side.CLIENT) 13 | @Mod.EventHandler 14 | public void init(FMLPreInitializationEvent event) throws IOException { 15 | new Client(); 16 | } 17 | 18 | @SideOnly(Side.SERVER) 19 | @Mod.EventHandler 20 | public void initServer(FMLPreInitializationEvent event) { 21 | System.out.println("666主播居然要给服务器安装Vapu暴打玩家是吧"); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/VapeClickGui/Config.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.VapeClickGui; 2 | 3 | public class Config { 4 | public String name; 5 | public String description; 6 | public boolean isLocation = false; 7 | 8 | public Config(String name, String description, Boolean isLocation) { 9 | this.name = name; 10 | this.description = description; 11 | this.isLocation = isLocation; 12 | 13 | } 14 | 15 | 16 | public String getDescription() { 17 | return description; 18 | } 19 | 20 | public String getName() { 21 | return name; 22 | } 23 | 24 | public void setDescription(String description) { 25 | this.description = description; 26 | } 27 | 28 | public void setName(String name) { 29 | this.name = name; 30 | } 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/gl/GLClientState.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.gl; 2 | 3 | public enum GLClientState implements GLenum { 4 | COLOR("GL_COLOR_ARRAY", '\u8076'), 5 | EDGE("GL_EDGE_FLAG_ARRAY", '\u8079'), 6 | FOG("GL_FOG_COORD_ARRAY", '\u8457'), 7 | INDEX("GL_INDEX_ARRAY", '\u8077'), 8 | NORMAL("GL_NORMAL_ARRAY", '\u8075'), 9 | SECONDARY_COLOR("GL_SECONDARY_COLOR_ARRAY", '\u845e'), 10 | TEXTURE("GL_TEXTURE_COORD_ARRAY", '\u8078'), 11 | VERTEX("GL_VERTEX_ARRAY", '\u8074'); 12 | 13 | private final String name; 14 | private final int cap; 15 | 16 | private GLClientState(String name, int cap) { 17 | this.name = name; 18 | this.cap = cap; 19 | } 20 | 21 | public String getName() { 22 | return this.name; 23 | } 24 | 25 | public int getCap() { 26 | return this.cap; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/render/FullBright.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.render; 2 | 3 | import net.minecraft.client.Minecraft; 4 | import org.lwjgl.input.Keyboard; 5 | import gq.vapulite.Vapu.ModuleType; 6 | import gq.vapulite.Vapu.modules.Module; 7 | 8 | public class FullBright extends Module { 9 | private float old; 10 | public FullBright() { 11 | super("FullBright", Keyboard.KEY_NONE, ModuleType.Render,"Make the bright for night and dark"); 12 | Chinese="夜视"; 13 | } 14 | 15 | @Override 16 | public void enable() { 17 | this.old = mc.gameSettings.gammaSetting; 18 | Minecraft.getMinecraft().gameSettings.gammaSetting = 300; 19 | } 20 | 21 | @Override 22 | public void disable() { 23 | Minecraft.getMinecraft().gameSettings.gammaSetting = this.old; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/movement/Speed.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.movement; 2 | 3 | import gq.vapulite.Vapu.ModuleType; 4 | import gq.vapulite.Vapu.modules.Module; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.TickEvent; 7 | import org.lwjgl.input.Keyboard; 8 | 9 | public class Speed extends Module { 10 | public Speed() { 11 | super("Speed", Keyboard.KEY_G, ModuleType.Movement,"moved quickly"); 12 | Chinese="加速"; 13 | } 14 | 15 | @SubscribeEvent 16 | public void onUpdate(TickEvent.PlayerTickEvent event) { 17 | if(!mc.thePlayer.isCollidedHorizontally && mc.thePlayer.moveForward > 0 && mc.thePlayer.onGround){ 18 | mc.thePlayer.setSprinting(true); 19 | mc.thePlayer.jump(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/eventapi/events/callables/EventCancellable.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.eventapi.events.callables; 2 | 3 | import gq.vapulite.eventapi.events.Event; 4 | import gq.vapulite.eventapi.events.Cancellable; 5 | 6 | /** 7 | * Abstract example implementation of the Cancellable interface. 8 | * 9 | * @author DarkMagician6 10 | * @since August 27, 2013 11 | */ 12 | public abstract class EventCancellable implements Event, Cancellable { 13 | public static int a = 1; 14 | public boolean cancelled; 15 | 16 | protected EventCancellable() { 17 | } 18 | 19 | /** 20 | * @see Cancellable.isCancelled 21 | */ 22 | @Override 23 | public boolean isCancelled() { 24 | return cancelled; 25 | } 26 | 27 | /** 28 | * @see Cancellable.setCancelled 29 | */ 30 | @Override 31 | public void setCancelled(boolean state) { 32 | cancelled = state; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/Config/LoadConfig.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.Config; 2 | 3 | import gq.vapulite.Vapu.Client; 4 | import gq.vapulite.Vapu.ModuleType; 5 | import gq.vapulite.Vapu.modules.Module; 6 | import gq.vapulite.Vapu.utils.Helper; 7 | 8 | import java.io.IOException; 9 | 10 | import static org.lwjgl.input.Keyboard.KEY_X; 11 | 12 | public class LoadConfig extends Module { 13 | public LoadConfig() { 14 | super("LoadConfig", KEY_X, ModuleType.Config,"Load your configs"); 15 | Chinese="加载配置"; 16 | NoToggle=true; 17 | } 18 | 19 | public void enable() { 20 | try { 21 | Client.LoadConfig(); 22 | } catch (IOException e) { 23 | e.printStackTrace(); 24 | state=false; 25 | } 26 | Helper.sendMessage("Configs Loaded."); 27 | state=false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/movement/NoSlowDown.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.movement; 2 | 3 | import gq.vapulite.Vapu.ModuleType; 4 | import gq.vapulite.Vapu.modules.Module; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.TickEvent; 7 | import org.lwjgl.input.Keyboard; 8 | import gq.vapulite.Vapu.Value; 9 | 10 | public class NoSlowDown extends Module { 11 | private Value speedValue = new Value<>("Speed", 1.0F); 12 | public NoSlowDown() { 13 | super("NoSlowDown", Keyboard.KEY_R, ModuleType.Movement); 14 | Chinese="没有减速"; 15 | } 16 | 17 | @SubscribeEvent 18 | public void onUpdate(TickEvent event) { 19 | mc.thePlayer.movementInput.moveStrafe = speedValue.getObject(); 20 | mc.thePlayer.movementInput.moveForward = speedValue.getObject(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuAttachPoint.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite; 2 | 3 | import gq.vapulite.Vapu.Client; 4 | import net.minecraft.launchwrapper.LaunchClassLoader; 5 | 6 | import java.lang.instrument.Instrumentation; 7 | 8 | public class VapuAttachPoint { 9 | public static void agentmain(String args, Instrumentation instrumentation) throws Exception { 10 | for (Class classes : instrumentation.getAllLoadedClasses()) { 11 | if (classes.getName().startsWith("net.minecraft.client.Minecraft")) { 12 | LaunchClassLoader classLoader = (LaunchClassLoader)classes.getClassLoader(); 13 | classLoader.addURL(VapuAttachPoint.class.getProtectionDomain().getCodeSource().getLocation()); 14 | Class client = classLoader.loadClass(Client.class.getName()); 15 | client.newInstance(); 16 | } 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/Config/SaveConfig.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.Config; 2 | 3 | import gq.vapulite.Vapu.Client; 4 | import gq.vapulite.Vapu.ModuleType; 5 | import gq.vapulite.Vapu.modules.Module; 6 | import gq.vapulite.Vapu.utils.Helper; 7 | 8 | import java.io.IOException; 9 | 10 | import static org.lwjgl.input.Keyboard.KEY_N; 11 | 12 | public class SaveConfig extends Module { 13 | public SaveConfig() { 14 | super("SaveConfig", KEY_N, ModuleType.Config,"Save your module setting(config)"); 15 | Chinese="保存配置"; 16 | NoToggle=true; 17 | } 18 | 19 | public void enable() { 20 | try { 21 | Client.SaveConfig(); 22 | } catch (IOException e) { 23 | e.printStackTrace(); 24 | state=false; 25 | } 26 | Helper.sendMessage("Configs Saved."); 27 | state=false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/eventapi/events/EventStoppable.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.eventapi.events; 2 | 3 | /** 4 | * The most basic form of an stoppable Event. Stoppable events are called 5 | * seperate from other events and the calling of methods is stopped as soon as 6 | * the EventStoppable is stopped. 7 | * 8 | * @author DarkMagician6 9 | * @since 26-9-13 10 | */ 11 | public abstract class EventStoppable implements Event { 12 | 13 | private boolean stopped; 14 | 15 | /** 16 | * No need for the constructor to be public. 17 | */ 18 | protected EventStoppable() { 19 | } 20 | 21 | /** 22 | * Sets the stopped state to true. 23 | */ 24 | public void stop() { 25 | stopped = true; 26 | } 27 | 28 | /** 29 | * Checks the stopped boolean. 30 | * 31 | * @return True if the EventStoppable is stopped. 32 | */ 33 | public boolean isStopped() { 34 | return stopped; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/gui/UI/Button.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.gui.UI; 2 | 3 | import gq.vapulite.Vapu.modules.Module; 4 | import net.minecraftforge.fml.relauncher.Side; 5 | import net.minecraftforge.fml.relauncher.SideOnly; 6 | 7 | 8 | @SideOnly(Side.CLIENT) 9 | public class Button { 10 | 11 | private Panel panel; 12 | private Module module; 13 | 14 | public Button(Panel panel, Module module) { 15 | this.panel = panel; 16 | this.module = module; 17 | } 18 | 19 | public void click() { 20 | module.setState(!module.getState()); 21 | } 22 | 23 | public Module getModule() { 24 | return module; 25 | } 26 | 27 | public boolean isHover(final int x, final int y, final int widht, final int height, final int mouseX, final int mouseY) { 28 | return mouseX >= x && mouseX <= x + widht && mouseY >= y && mouseY <= y + height; 29 | } 30 | } -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/value/Value.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0_132. 3 | */ 4 | package gq.vapulite.Vapu.value; 5 | 6 | public abstract class Value { 7 | private String displayName; 8 | private String name; 9 | private V value; 10 | public float optionAnim = 0;//present 11 | public float optionAnimNow = 0;//present 12 | public float animX1; 13 | public float animX; 14 | 15 | public Value(String displayName, String name) { 16 | this.displayName = displayName; 17 | this.name = name; 18 | } 19 | 20 | public String getDisplayName() { 21 | return this.displayName; 22 | } 23 | 24 | public String getName() { 25 | return this.name; 26 | } 27 | 28 | public V getValue() { 29 | return this.value; 30 | } 31 | 32 | public void setValue(V value) { 33 | this.value = value; 34 | } 35 | } 36 | 37 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/utils/ForgePlugin.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.utils; 2 | 3 | import java.util.Map; 4 | 5 | import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin; 6 | import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin.Name;; 7 | 8 | 9 | // -Dfml.coreMods.load=com.xue.vapu.ForgePlugin -DFORGE_FORCE_FRAME_RECALC=true 10 | @Name("VapuForgePlugin") 11 | public class ForgePlugin implements IFMLLoadingPlugin { 12 | 13 | @Override 14 | public String[] getASMTransformerClass() { 15 | return new String[] {"com.xue.vapu.ClassTransformer"}; 16 | } 17 | 18 | @Override 19 | public String getModContainerClass() { 20 | return null; 21 | } 22 | 23 | @Override 24 | public String getSetupClass() { 25 | return null; 26 | } 27 | 28 | @Override 29 | public void injectData(Map data) { 30 | } 31 | 32 | @Override 33 | public String getAccessTransformerClass() { 34 | return null; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/PacketSendEvent.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.VapuMod; 2 | 3 | import net.minecraft.network.Packet; 4 | import net.minecraft.network.play.client.C03PacketPlayer; 5 | import gq.vapulite.eventapi.events.callables.EventCancellable; 6 | 7 | public class PacketSendEvent extends EventCancellable { 8 | 9 | 10 | public Packet packet; 11 | 12 | public PacketSendEvent(Packet packet) { 13 | this.packet = packet; 14 | if (packet instanceof C03PacketPlayer.C05PacketPlayerLook || packet instanceof C03PacketPlayer.C06PacketPlayerPosLook) { 15 | float yaw = ((C03PacketPlayer) packet).getYaw(); 16 | float pitch = ((C03PacketPlayer) packet).getPitch(); 17 | // RotationUtils.serverRotation.setYaw(yaw); 18 | // RotationUtils.serverRotation.setPitch(pitch); 19 | } 20 | } 21 | 22 | public Packet getPacket() { 23 | // TODO 自动生成的方法存根 24 | return packet; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/combat/AutoBlock.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.combat; 2 | 3 | import gq.vapulite.Vapu.Client; 4 | import gq.vapulite.Vapu.ModuleType; 5 | import gq.vapulite.Vapu.modules.Module; 6 | import net.minecraft.client.Minecraft; 7 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 8 | import net.minecraftforge.fml.common.gameevent.TickEvent; 9 | import org.lwjgl.input.Keyboard; 10 | 11 | import static net.minecraft.realms.RealmsMth.sqrt; 12 | import static net.minecraft.realms.RealmsMth.wrapDegrees; 13 | 14 | public class AutoBlock extends Module { 15 | public AutoBlock() { 16 | super("AutoBlock", Keyboard.KEY_NONE, ModuleType.Combat); 17 | Chinese="自动格挡"; 18 | } 19 | 20 | 21 | @Override 22 | public void enable(){ 23 | Client.AutoBlock = true; 24 | } 25 | 26 | @Override 27 | public void disable(){ 28 | Client.AutoBlock = false; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/Config/Uninject.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.Config; 2 | 3 | import gq.vapulite.Vapu.Client; 4 | import gq.vapulite.Vapu.ModuleType; 5 | import gq.vapulite.Vapu.modules.Module; 6 | import gq.vapulite.Manager.ModuleManager; 7 | 8 | import java.util.ArrayList; 9 | 10 | import static org.lwjgl.input.Keyboard.KEY_NONE; 11 | 12 | public class Uninject extends Module { 13 | public Uninject() { 14 | super("Uninject", KEY_NONE, ModuleType.Config,"Uninject "+Client.name); 15 | Chinese="卸载"; 16 | NoToggle=true; 17 | } 18 | 19 | public void enable() { 20 | this.mc.thePlayer.closeScreen(); 21 | ArrayList modules = new ArrayList<>(ModuleManager.getModules()); 22 | for (Module m : modules) { 23 | if (m != null) { 24 | m.setState(false); 25 | } 26 | } 27 | Client.unInject(); 28 | state=false; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/math/Vec4f.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.math; 2 | 3 | public class Vec4f { 4 | public float x; 5 | public float y; 6 | public float w; 7 | public float h; 8 | 9 | public float getX() { 10 | return this.x; 11 | } 12 | 13 | public float getY() { 14 | return this.y; 15 | } 16 | 17 | public float getW() { 18 | return this.w; 19 | } 20 | 21 | public float getH() { 22 | return this.h; 23 | } 24 | 25 | public void setX(float x2) { 26 | this.x = x2; 27 | } 28 | 29 | public void setY(float y2) { 30 | this.y = y2; 31 | } 32 | 33 | public void setW(float w2) { 34 | this.w = w2; 35 | } 36 | 37 | public void setH(float h2) { 38 | this.h = h2; 39 | } 40 | 41 | public Vec4f(float x2, float y2, float w2, float h2) { 42 | this.x = x2; 43 | this.y = y2; 44 | this.w = w2; 45 | this.h = h2; 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/combat/AntiBot.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.combat; 2 | 3 | import gq.vapulite.Vapu.ModuleType; 4 | import gq.vapulite.Vapu.modules.Module; 5 | import gq.vapulite.Manager.ModuleManager; 6 | import net.minecraft.entity.Entity; 7 | import org.lwjgl.input.Keyboard; 8 | 9 | import java.util.Objects; 10 | 11 | public class AntiBot extends Module { 12 | public AntiBot() { 13 | super("AntiBot", Keyboard.KEY_NONE, ModuleType.Combat,"Make cheats exclude the hypixel robot"); 14 | Chinese="反机器人"; 15 | } 16 | 17 | public static boolean isServerBot(Entity entity) { 18 | if (Objects.requireNonNull(ModuleManager.getModule("AntiBot")).state) { 19 | return !entity.getDisplayName().getFormattedText().startsWith("\u00a7") || entity.isInvisible() || entity.getDisplayName().getFormattedText().toLowerCase().contains("npc"); 20 | } 21 | return false; 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/render/Colors2.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.render; 2 | 3 | import java.awt.*; 4 | 5 | public class Colors2 { 6 | public static int getColor(Color color) { 7 | return Colors2.getColor(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()); 8 | } 9 | 10 | public static int getColor(int brightness) { 11 | return Colors2.getColor(brightness, brightness, brightness, 255); 12 | } 13 | 14 | public static int getColor(int brightness, int alpha) { 15 | return Colors2.getColor(brightness, brightness, brightness, alpha); 16 | } 17 | 18 | public static int getColor(int red, int green, int blue) { 19 | return Colors2.getColor(red, green, blue, 255); 20 | } 21 | 22 | public static int getColor(int red, int green, int blue, int alpha) { 23 | int color = 0; 24 | color |= alpha << 24; 25 | color |= red << 16; 26 | color |= green << 8; 27 | return color |= blue; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/utils/Helper.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.utils; 2 | 3 | import gq.vapulite.Vapu.Client; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraft.util.ChatComponentText; 6 | import net.minecraft.util.EnumChatFormatting; 7 | 8 | public class Helper { 9 | public static Minecraft mc = Minecraft.getMinecraft(); 10 | 11 | public static void sendMessage(String message) { 12 | message = "["+Client.name+"] " + message; 13 | new ChatUtil.ChatMessageBuilder(true, true).appendText(message).setColor(EnumChatFormatting.LIGHT_PURPLE).build().displayClientSided(); 14 | } 15 | 16 | public static boolean onServer(String server) { 17 | return !mc.isSingleplayer() && Helper.mc.getCurrentServerData().serverIP.toLowerCase().contains(server); 18 | } 19 | 20 | public static void sendMessageWithoutPrefix(String string) { 21 | Minecraft.getMinecraft().ingameGUI.getChatGUI().printChatMessage(new ChatComponentText(string)); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/VapeClickGui/utils/Tessellation.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.VapeClickGui.utils; 2 | 3 | import java.awt.*; 4 | 5 | public interface Tessellation { 6 | static Tessellation createBasic(int size) { 7 | return new BasicTess(size); 8 | } 9 | 10 | static Tessellation createExpanding(int size, float ratio, float factor) { 11 | return new ExpandingTess(size, ratio, factor); 12 | } 13 | 14 | Tessellation setColor(int var1); 15 | 16 | default Tessellation setColor(Color color) { 17 | return this.setColor(new Color(255, 255, 255)); 18 | } 19 | 20 | Tessellation setTexture(float var1, float var2); 21 | 22 | Tessellation addVertex(float var1, float var2, float var3); 23 | 24 | Tessellation bind(); 25 | 26 | Tessellation pass(int var1); 27 | 28 | Tessellation reset(); 29 | 30 | Tessellation unbind(); 31 | 32 | default Tessellation draw(int mode) { 33 | return this.bind().pass(mode).reset(); 34 | } 35 | } 36 | 37 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/player/Timer.java: -------------------------------------------------------------------------------- 1 | //TODO: Timer 2 | package gq.vapulite.Vapu.modules.player; 3 | 4 | import gq.vapulite.Vapu.ModuleType; 5 | import gq.vapulite.Vapu.modules.Module; 6 | import gq.vapulite.Vapu.value.Numbers; 7 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 8 | import net.minecraftforge.fml.common.gameevent.TickEvent; 9 | import org.lwjgl.input.Keyboard; 10 | 11 | public class Timer extends Module { 12 | public Timer (){ 13 | super("Timer", Keyboard.KEY_NONE, ModuleType.Player, "Make world quickly"); 14 | Chinese=("变速齿轮"); 15 | } 16 | 17 | private Numbers timer = new Numbers("Speed", "Speed",1.0, 1.0, 10.0,1.0); 18 | 19 | @SubscribeEvent 20 | public void onUpdate(TickEvent.PlayerTickEvent event) { 21 | if (mc.thePlayer == null) ; 22 | return; 23 | 24 | // mc.timer.timerSpeed = 1.0; 25 | } 26 | 27 | @SubscribeEvent 28 | public void onDisable() { 29 | // mc.timer.timerSpeed = 1.0; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/value/Numbers.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.value; 2 | 3 | public class Numbers extends Value { 4 | public T min; 5 | public T max; 6 | public T inc; 7 | private String name; 8 | private final boolean integer; 9 | 10 | public Numbers(String displayName, String name, T value, T min, T max, T inc) { 11 | super(displayName, name); 12 | setValue(value); 13 | this.min = min; 14 | this.max = max; 15 | this.inc = inc; 16 | this.integer = false; 17 | } 18 | 19 | public T getMinimum() { 20 | return this.min; 21 | } 22 | 23 | public T getMaximum() { 24 | return this.max; 25 | } 26 | 27 | public T getIncrement() { 28 | return this.inc; 29 | } 30 | 31 | public void setIncrement(T inc) { 32 | this.inc = inc; 33 | } 34 | 35 | public String getId() { 36 | return this.name; 37 | } 38 | 39 | public boolean isInteger() { 40 | return false; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/ModuleType.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu; 2 | 3 | import gq.vapulite.Vapu.gui.components.SubWindow; 4 | 5 | public enum ModuleType{ 6 | Combat("Combat","战斗类"), 7 | Render("Render", "视觉类"), 8 | Movement("Movement", "移动类"), 9 | Player("Player", "玩家类"), 10 | World("World", "世界类"), 11 | Other("Other", "其他"), 12 | Config("Global", "全局设置"); 13 | 14 | private final String name; 15 | private final String ChineseName; 16 | private final SubWindow window; 17 | 18 | ModuleType(String name, String chineseName) { 19 | this.name = name; 20 | this.ChineseName = chineseName; 21 | this.window = new SubWindow(name); 22 | } 23 | 24 | @Override 25 | public String toString() { 26 | return name; 27 | } 28 | 29 | public String getName() { 30 | if(Client.CHINESE){ 31 | return ChineseName; 32 | } else { 33 | return name; 34 | } 35 | } 36 | 37 | public SubWindow getWindow() { 38 | return window; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/Stopwatch.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod; 5 | 6 | public class Stopwatch { 7 | private long lastMS = 0L; 8 | 9 | public int convertToMS(int d) { 10 | return 1000 / d; 11 | } 12 | 13 | public long getCurrentMS() { 14 | return System.nanoTime() / 1000000L; 15 | } 16 | 17 | public boolean hasReached(long milliseconds) { 18 | return this.getCurrentMS() - this.lastMS >= milliseconds; 19 | } 20 | 21 | public boolean hasTimeReached(long delay) { 22 | return System.currentTimeMillis() - this.lastMS >= delay; 23 | } 24 | 25 | public long getDelay() { 26 | return System.currentTimeMillis() - this.lastMS; 27 | } 28 | 29 | public void reset() { 30 | this.lastMS = this.getCurrentMS(); 31 | } 32 | 33 | public void setLastMS() { 34 | this.lastMS = System.currentTimeMillis(); 35 | } 36 | 37 | public void setLastMS(long lastMS) { 38 | this.lastMS = lastMS; 39 | } 40 | } 41 | 42 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/EventMove.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.VapuMod; 2 | 3 | import gq.vapulite.eventapi.events.Event; 4 | 5 | public class EventMove implements Event { 6 | public static double x; 7 | public static double y; 8 | public static double z; 9 | private final double motionX; 10 | private final double motionY; 11 | private final double motionZ; 12 | 13 | public EventMove(double x, double y, double z) { 14 | EventMove.x = x; 15 | EventMove.y = y; 16 | EventMove.z = z; 17 | this.motionX = x; 18 | this.motionY = y; 19 | this.motionZ = z; 20 | } 21 | 22 | public double getX() { 23 | return x; 24 | } 25 | 26 | public void setX(double x) { 27 | EventMove.x = x; 28 | } 29 | 30 | public double getY() { 31 | return y; 32 | } 33 | 34 | public static void setY(double y) { 35 | EventMove.y = y; 36 | } 37 | 38 | public double getZ() { 39 | return z; 40 | } 41 | 42 | public void setZ(double z) { 43 | EventMove.z = z; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/player/AutoTools.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.player; 2 | 3 | import gq.vapulite.Vapu.utils.BlockUtils; 4 | import net.minecraft.util.BlockPos; 5 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 6 | import net.minecraftforge.fml.common.gameevent.TickEvent; 7 | import org.lwjgl.input.Keyboard; 8 | import gq.vapulite.Vapu.ModuleType; 9 | import gq.vapulite.Vapu.modules.Module; 10 | 11 | public class AutoTools extends Module { 12 | public AutoTools() { 13 | super("AutoTools", Keyboard.KEY_I, ModuleType.Player,"Switch correct tools when you destroy blocks"); 14 | Chinese="自动工具"; 15 | } 16 | 17 | @SubscribeEvent 18 | public void onTick(TickEvent event) { 19 | if (!mc.gameSettings.keyBindAttack.isKeyDown()) { 20 | return; 21 | } 22 | if (mc.objectMouseOver == null) { 23 | return; 24 | } 25 | BlockPos pos = mc.objectMouseOver.getBlockPos(); 26 | if (pos == null) { 27 | return; 28 | } 29 | BlockUtils.updateTool(pos); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/values/Value.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.values; 2 | 3 | public class Value { 4 | public String name; 5 | public V value; 6 | public float optionAnim = 0;//present 7 | public float optionAnimNow = 0;//present 8 | public float animX1; 9 | public float animX; 10 | public boolean drag; 11 | 12 | 13 | public Value(String name){ 14 | this.name = name; 15 | } 16 | 17 | public String getName(){ 18 | return this.name; 19 | } 20 | 21 | public V getValue(){ 22 | return this.value; 23 | } 24 | 25 | public void setValue(V val){ 26 | // EventChangeValue eventBefore = new EventChangeValue(EventChangeValue.Mode.BEFORE, this.name, this); 27 | // EventChangeValue eventAfter = new EventChangeValue(EventChangeValue.Mode.AFTER, this.name, this); 28 | // 29 | // EventManager.call(eventBefore); 30 | 31 | // if(!eventBefore.isCancelled()){ 32 | // this.value = val; 33 | // } else { 34 | // return; 35 | // } 36 | // 37 | // EventManager.call(eventAfter); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/utils/ModList.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.utils; 2 | 3 | import java.util.ArrayList; 4 | 5 | public class ModList extends ArrayList { 6 | 7 | public boolean needInterupt = true; 8 | @Override 9 | public boolean add(Object object) { 10 | boolean res = super.add((T) object); 11 | if (needInterupt) { 12 | Tool.logerror("mod add method"); 13 | 14 | int index = -1; 15 | for(int i = 0; i < super.size(); i++) { 16 | if (super.get(i).getClass().getName().equals("com.xue.vapu.ClassTransformer")) { 17 | index = i; 18 | break; 19 | } 20 | } 21 | 22 | Tool.logerror("find index %s", index); 23 | 24 | Object myClassTransformer = null; 25 | if (index >= 0) { 26 | myClassTransformer = (Object) super.remove(index); 27 | } 28 | 29 | if (myClassTransformer != null) { 30 | super.add(super.size(), (T) myClassTransformer); 31 | } 32 | 33 | Tool.logerror("interupt add in mod list "); 34 | for(int i = 0; i < super.size(); i++) { 35 | Tool.logerror(super.get(i).toString()); 36 | } 37 | } 38 | return res; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: the place where workflow upload shit 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | workflow_dispatch: 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: eat fat fish 13 | uses: actions/checkout@v2 14 | with: 15 | submodules: recursive 16 | - name: drop brain 17 | uses: actions/setup-java@v2 18 | with: 19 | distribution: "adopt" 20 | java-version: 8 21 | cache: "gradle" 22 | - name: get low IQ 23 | id: vars 24 | run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)" 25 | - name: kill myse1f 26 | run: chmod +x gradlew && ./gradlew setupCiWorkspace && ./gradlew build 27 | - name: go to hell 28 | run: mv build/libs/VapuLite-*.jar build/libs/Client-${{ steps.vars.outputs.sha_short }}.jar 29 | - name: clean my body 30 | run: ./gradlew clean 31 | - name: done 32 | uses: actions/upload-artifact@v2 33 | with: 34 | name: Client 35 | path: build/libs/Client-${{ steps.vars.outputs.sha_short }}.jar 36 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/MouseEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class MouseEvent 9 | extends Event { 10 | public double x; 11 | public double y; 12 | public double z; 13 | public int button; 14 | 15 | public MouseEvent(double x, double y, int button) { 16 | this.x = x; 17 | this.y = y; 18 | this.button = button; 19 | } 20 | 21 | public double getX() { 22 | return this.x; 23 | } 24 | 25 | public double getY() { 26 | return this.y; 27 | } 28 | 29 | public double getZ() { 30 | return this.z; 31 | } 32 | 33 | public int getButton() { 34 | return this.button; 35 | } 36 | 37 | public void setX(double x) { 38 | this.x = x; 39 | } 40 | 41 | public void setY(double y) { 42 | this.y = y; 43 | } 44 | 45 | public void setZ(double z) { 46 | this.z = z; 47 | } 48 | 49 | public void setButton(int button) { 50 | this.button = button; 51 | } 52 | } 53 | 54 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/MoveRawEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class MoveRawEvent 9 | extends Event { 10 | public double x; 11 | public double y; 12 | public double z; 13 | private boolean ground; 14 | 15 | public MoveRawEvent(double x, double y, double z) { 16 | this.x = x; 17 | this.y = y; 18 | this.z = z; 19 | } 20 | 21 | public double getX() { 22 | return this.x; 23 | } 24 | 25 | public double getY() { 26 | return this.y; 27 | } 28 | 29 | public double getZ() { 30 | return this.z; 31 | } 32 | 33 | public void setX(double x) { 34 | this.x = x; 35 | } 36 | 37 | public void setY(double y) { 38 | this.y = y; 39 | } 40 | 41 | public void setZ(double z) { 42 | this.z = z; 43 | } 44 | 45 | public boolean isGround() { 46 | return this.ground; 47 | } 48 | 49 | public void setGround(boolean ground) { 50 | this.ground = ground; 51 | } 52 | } 53 | 54 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/render/Tessellation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0_132. 3 | */ 4 | package gq.vapulite.render; 5 | 6 | import net.minecraft.client.renderer.WorldRenderer; 7 | 8 | import java.awt.*; 9 | 10 | public interface Tessellation { 11 | public Tessellation setColor(int var1); 12 | 13 | default public Tessellation setColor(Color color) { 14 | return this.setColor(new Color(255, 255, 255)); 15 | } 16 | 17 | public Tessellation setTexture(float var1, float var2); 18 | 19 | public Tessellation addVertex(float var1, float var2, float var3); 20 | 21 | public Tessellation bind(); 22 | 23 | public Tessellation pass(int var1); 24 | 25 | public Tessellation reset(); 26 | 27 | public Tessellation unbind(); 28 | 29 | default public Tessellation draw(int mode) { 30 | return this.bind().pass(mode).reset(); 31 | } 32 | 33 | public static Tessellation createBasic(int size) { 34 | return new BasicTess(size); 35 | } 36 | 37 | public static Tessellation createExpanding(int size, float ratio, float factor) { 38 | return new ExpandingTess(size, ratio, factor); 39 | } 40 | 41 | } 42 | 43 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/utils/AnimationUtils.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.utils; 2 | 3 | public class AnimationUtils { 4 | public static float rotateDirection = 0; 5 | public static boolean animationDone = false; 6 | 7 | public static double delta; 8 | 9 | public static float getAnimationState(float animation, float finalState, float speed) { 10 | final float add = (float) (delta * (speed / 1000f)); 11 | if (animation < finalState) { 12 | if (animation + add < finalState) { 13 | animation += add; 14 | } else { 15 | animation = finalState; 16 | } 17 | } else if (animation - add > finalState) { 18 | animation -= add; 19 | } else { 20 | animation = finalState; 21 | } 22 | return animation; 23 | } 24 | 25 | public static float smoothAnimation(float ani, float finalState, float speed, float scale) { 26 | return getAnimationState(ani, finalState, (float) (Math.max(10, (Math.abs(ani - finalState)) * speed) * scale)); 27 | } 28 | 29 | public static float getRotateDirection() {// AllitemRotate->Rotate 30 | rotateDirection = rotateDirection + (float) delta; 31 | if (rotateDirection > 360) 32 | rotateDirection = 0; 33 | return rotateDirection; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/PacketEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | import net.minecraft.network.Packet; 8 | 9 | public class PacketEvent 10 | extends Event { 11 | public Packet packet; 12 | public DirectionType dir; 13 | 14 | public PacketEvent(Packet packet, DirectionType dir) { 15 | this.packet = packet; 16 | this.dir = dir; 17 | } 18 | 19 | public boolean isIncoming() { 20 | return this.dir == DirectionType.Incoming; 21 | } 22 | 23 | public boolean isOutgoing() { 24 | return this.dir == DirectionType.Outgoing; 25 | } 26 | 27 | public Packet getPacket() { 28 | return this.packet; 29 | } 30 | 31 | public DirectionType getDir() { 32 | return this.dir; 33 | } 34 | 35 | public void setPacket(Packet packet) { 36 | this.packet = packet; 37 | } 38 | 39 | public void setDir(DirectionType dir) { 40 | this.dir = dir; 41 | } 42 | 43 | public static enum DirectionType { 44 | Incoming, 45 | Outgoing; 46 | 47 | } 48 | } 49 | 50 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/xray/XRayData.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.xray; 2 | 3 | public class XRayData { 4 | private final int meta; 5 | private int id; 6 | private int red; 7 | private int green; 8 | private int blue; 9 | 10 | public XRayData(int id, int meta, int red, int green, int blue) { 11 | this.id = id; 12 | this.meta = meta; 13 | this.red = red; 14 | this.green = green; 15 | this.blue = blue; 16 | } 17 | 18 | public int getId() { 19 | return this.id; 20 | } 21 | 22 | public void setId(int id) { 23 | this.id = id; 24 | } 25 | 26 | public int getMeta() { 27 | return this.meta; 28 | } 29 | 30 | public int getRed() { 31 | return this.red; 32 | } 33 | 34 | public void setRed(int red) { 35 | this.red = red; 36 | } 37 | 38 | public int getGreen() { 39 | return this.green; 40 | } 41 | 42 | public void setGreen(int green) { 43 | this.green = green; 44 | } 45 | 46 | public int getBlue() { 47 | return this.blue; 48 | } 49 | 50 | public void setBlue(int blue) { 51 | this.blue = blue; 52 | } 53 | } 54 | 55 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/VapeClickGui/utils/ExpandingTess.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.VapeClickGui.utils; 2 | 3 | import java.nio.ByteBuffer; 4 | import java.nio.ByteOrder; 5 | 6 | public class ExpandingTess 7 | extends BasicTess { 8 | private final float ratio; 9 | private final float factor; 10 | 11 | ExpandingTess(int initial, float ratio, float factor) { 12 | super(initial); 13 | this.ratio = ratio; 14 | this.factor = factor; 15 | } 16 | 17 | @Override 18 | public Tessellation addVertex(float x, float y, float z) { 19 | int capacity = this.raw.length; 20 | if ((float) (this.index * 6) >= (float) capacity * this.ratio) { 21 | capacity = (int) ((float) capacity * this.factor); 22 | int[] newBuffer = new int[capacity]; 23 | System.arraycopy(this.raw, 0, newBuffer, 0, this.raw.length); 24 | this.raw = newBuffer; 25 | this.buffer = ByteBuffer.allocateDirect(capacity * 4).order(ByteOrder.nativeOrder()); 26 | this.iBuffer = this.buffer.asIntBuffer(); 27 | this.fBuffer = this.buffer.asFloatBuffer(); 28 | } 29 | return super.addVertex(x, y, z); 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/render/ExpandingTess.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0_132. 3 | */ 4 | package gq.vapulite.render; 5 | 6 | import java.nio.ByteBuffer; 7 | import java.nio.ByteOrder; 8 | 9 | public class ExpandingTess 10 | extends BasicTess { 11 | private final float ratio; 12 | private final float factor; 13 | 14 | ExpandingTess(int initial, float ratio, float factor) { 15 | super(initial); 16 | this.ratio = ratio; 17 | this.factor = factor; 18 | } 19 | 20 | @Override 21 | public Tessellation addVertex(float x, float y, float z) { 22 | int capacity = this.raw.length; 23 | if ((float)(this.index * 6) >= (float)capacity * this.ratio) { 24 | capacity = (int)((float)capacity * this.factor); 25 | int[] newBuffer = new int[capacity]; 26 | System.arraycopy(this.raw, 0, newBuffer, 0, this.raw.length); 27 | this.raw = newBuffer; 28 | this.buffer = ByteBuffer.allocateDirect(capacity * 4).order(ByteOrder.nativeOrder()); 29 | this.iBuffer = this.buffer.asIntBuffer(); 30 | this.fBuffer = this.buffer.asFloatBuffer(); 31 | } 32 | return super.addVertex(x, y, z); 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/utils/Tool.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.utils; 2 | 3 | import com.google.gson.JsonObject; 4 | import net.minecraft.client.Minecraft; 5 | import net.minecraft.util.IChatComponent; 6 | import org.apache.commons.lang3.exception.ExceptionUtils; 7 | import org.apache.logging.log4j.Level; 8 | import org.apache.logging.log4j.LogManager; 9 | 10 | public class Tool { 11 | public static void displayChatMessage(String message) { 12 | // logerror(Tool.class.getClassLoader().toString()); 13 | Minecraft mc = Minecraft.getMinecraft(); 14 | if (mc.thePlayer == null) { 15 | log("(MCChat)" + message); 16 | return; 17 | } 18 | 19 | final JsonObject jsonObject = new JsonObject(); 20 | jsonObject.addProperty("text", message); 21 | 22 | mc.thePlayer.addChatMessage(IChatComponent.Serializer.jsonToComponent(jsonObject.toString())); 23 | } 24 | 25 | public static void log(String s, Object... args) { 26 | LogManager.getLogger().log(Level.INFO, String.format(s, args)); 27 | } 28 | 29 | public static void logerror(String s, Object... args) { 30 | LogManager.getLogger().log(Level.ERROR, String.format(s, args)); 31 | } 32 | 33 | public static void logException(Throwable e) { 34 | logerror(ExceptionUtils.getStackTrace(e)); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/combat/Velocity.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.combat; 2 | 3 | import gq.vapulite.Vapu.Client; 4 | import gq.vapulite.Vapu.ModuleType; 5 | import gq.vapulite.Vapu.modules.Module; 6 | import net.minecraft.client.entity.EntityPlayerSP; 7 | import net.minecraftforge.event.entity.living.LivingEvent; 8 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 9 | import org.lwjgl.input.Keyboard; 10 | 11 | public class Velocity extends Module { 12 | public Velocity() { 13 | super("Velocity", Keyboard.KEY_NONE, ModuleType.Combat,""); 14 | Chinese="反击退"; 15 | } 16 | 17 | @SubscribeEvent 18 | public void c(LivingEvent.LivingUpdateEvent d) { 19 | if (mc.thePlayer.hurtTime == mc.thePlayer.maxHurtTime) { 20 | // && mc.thePlayer.maxHurtTime > 0 21 | final double ch = Math.random(); 22 | final EntityPlayerSP thePlayer = Velocity.mc.thePlayer; 23 | thePlayer.motionX *= 96.0 / 100.0; 24 | final EntityPlayerSP thePlayer2 = Velocity.mc.thePlayer; 25 | thePlayer2.motionY *= 1.0; 26 | final EntityPlayerSP thePlayer3 = Velocity.mc.thePlayer; 27 | thePlayer3.motionZ *= 1.0; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/world/FastPlace.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.world; 2 | 3 | import gq.vapulite.Vapu.ModuleType; 4 | import gq.vapulite.Vapu.modules.Module; 5 | import gq.vapulite.Vapu.utils.TimerUtil; 6 | import net.minecraft.client.settings.KeyBinding; 7 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 8 | import net.minecraftforge.fml.common.gameevent.TickEvent; 9 | import org.lwjgl.input.Keyboard; 10 | 11 | import java.util.concurrent.ThreadLocalRandom; 12 | 13 | public class FastPlace extends Module { 14 | private final TimerUtil timer = new TimerUtil(); 15 | public FastPlace() { 16 | super("FastPlace", Keyboard.KEY_NONE, ModuleType.World,"Make you place the blocks faster"); 17 | Chinese="快速放置"; 18 | } 19 | 20 | @SubscribeEvent 21 | public void onTick(TickEvent event) { 22 | int key = mc.gameSettings.keyBindUseItem.getKeyCode(); 23 | 24 | if (mc.gameSettings.keyBindUseItem.isKeyDown()) { 25 | if (timer.delay(1000 / ThreadLocalRandom.current().nextInt((int) 19, (int) 20))) { 26 | mc.thePlayer.swingItem(); 27 | KeyBinding.onTick(key); 28 | timer.reset(); 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/CollideEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | import net.minecraft.block.Block; 8 | import net.minecraft.util.AxisAlignedBB; 9 | 10 | public class CollideEvent 11 | extends Event { 12 | public final Block block; 13 | public AxisAlignedBB boundingBox; 14 | public final double x; 15 | public final double y; 16 | public final double z; 17 | 18 | public CollideEvent(AxisAlignedBB bb, Block block, double x, double y, double z) { 19 | this.block = block; 20 | this.boundingBox = bb; 21 | this.x = x; 22 | this.y = y; 23 | this.z = z; 24 | } 25 | 26 | public AxisAlignedBB getBoundingBox() { 27 | return this.boundingBox; 28 | } 29 | 30 | public void setBoundingBox(AxisAlignedBB boundingBox) { 31 | this.boundingBox = boundingBox; 32 | } 33 | 34 | public Block getBlock() { 35 | return this.block; 36 | } 37 | 38 | public double getX() { 39 | return this.x; 40 | } 41 | 42 | public double getY() { 43 | return this.y; 44 | } 45 | 46 | public double getZ() { 47 | return this.z; 48 | } 49 | } 50 | 51 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/value/Mode.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.value; 2 | 3 | public class Mode 4 | extends Value { 5 | private V[] modes; 6 | 7 | public Mode(String displayName, String name, V[] modes, V value) { 8 | super(displayName, name); 9 | this.modes = modes; 10 | this.setValue(value); 11 | } 12 | 13 | public V[] getModes() { 14 | return this.modes; 15 | } 16 | 17 | public String getModeAsString() { 18 | return ((Enum)this.getValue()).name(); 19 | } 20 | 21 | public void setMode(String mode) { 22 | V[] arrV = this.modes; 23 | int n = arrV.length; 24 | int n2 = 0; 25 | while (n2 < n) { 26 | V e = arrV[n2]; 27 | if (e.name().equalsIgnoreCase(mode)) { 28 | this.setValue(e); 29 | } 30 | ++n2; 31 | } 32 | } 33 | 34 | public boolean isValid(String name) { 35 | V[] arrV = this.modes; 36 | int n = arrV.length; 37 | int n2 = 0; 38 | while (n2 < n) { 39 | V e = arrV[n2]; 40 | if (e.name().equalsIgnoreCase(name)) { 41 | return true; 42 | } 43 | ++n2; 44 | } 45 | return false; 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/eventapi/EventAPI.java: -------------------------------------------------------------------------------- 1 | /** 2 | * This is an API used for handling events across your java based projects. 3 | * It's meant to be simple to use without sacrificing performance and extensibility. 4 | * 5 | * Currently the API is in beta phase but it's stable and ready to be used. 6 | * 7 | * If you have any suggestion for improvements/fixes for shit, 8 | * feel free to make a pull request on the bitbucket: https://bitbucket.org/DarkMagician6/eventapi/overview. 9 | * 10 | * For information on how to use the API take a look at the wiki: 11 | * https://bitbucket.org/DarkMagician6/eventapi/wiki/Home 12 | * 13 | * 14 | */ 15 | package gq.vapulite.eventapi; 16 | 17 | /** 18 | * Main class for the API. Contains various information about the API. 19 | * 20 | * @author DarkMagician6 21 | * @since July 31, 2013 22 | */ 23 | public final class EventAPI { 24 | 25 | /** 26 | * No need to create an Object of this class as all Methods are static. 27 | */ 28 | private EventAPI() { 29 | } 30 | 31 | /** 32 | * The current version of the API. 33 | */ 34 | public static final String VERSION = String.format("%s-%s", "0.7", "beta"); 35 | 36 | /** 37 | * Array containing the authors of the API. 38 | */ 39 | public static final String[] AUTHORS = { "DarkMagician6" }; 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/values/type/Mode.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.values.type; 2 | 3 | import gq.vapulite.values.Value; 4 | 5 | public class Mode 6 | extends Value { 7 | private V[] modes; 8 | 9 | public Mode(String name, V[] modes, V value) { 10 | super(name); 11 | this.modes = modes; 12 | this.setValue(value); 13 | } 14 | 15 | public V[] getModes() { 16 | return this.modes; 17 | } 18 | 19 | public String getModeAsString() { 20 | return ((Enum)this.getValue()).name(); 21 | } 22 | 23 | public void setMode(String mode) { 24 | V[] arrV = this.modes; 25 | int n = arrV.length; 26 | int n2 = 0; 27 | while (n2 < n) { 28 | V e = arrV[n2]; 29 | if (e.name().equalsIgnoreCase(mode)) { 30 | this.setValue(e); 31 | } 32 | ++n2; 33 | } 34 | } 35 | 36 | public boolean isValid(String name) { 37 | V[] arrV = this.modes; 38 | int n = arrV.length; 39 | int n2 = 0; 40 | while (n2 < n) { 41 | V e = arrV[n2]; 42 | if (e.name().equalsIgnoreCase(name)) { 43 | return true; 44 | } 45 | ++n2; 46 | } 47 | return false; 48 | } 49 | 50 | } 51 | 52 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/eventapi/types/Priority.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.eventapi.types; 2 | 3 | /** 4 | * The priority for the dispatcher to determine what method should be invoked 5 | * first. Ram was talking about the memory usage of the way I store the data so 6 | * I decided to just use bytes for the priority because they take up only 8 bits 7 | * of memory per value compared to the 32 bits per value of an enum (Same as an 8 | * integer). 9 | * 10 | * @author DarkMagician6 11 | * @since August 3, 2013 12 | */ 13 | public final class Priority { 14 | 15 | public static final byte 16 | /** 17 | * Highest priority, called first. 18 | */ 19 | HIGHEST = 0, 20 | /** 21 | * High priority, called after the highest priority. 22 | */ 23 | HIGH = 1, 24 | /** 25 | * Medium priority, called after the high priority. 26 | */ 27 | MEDIUM = 2, 28 | /** 29 | * Low priority, called after the medium priority. 30 | */ 31 | LOW = 3, 32 | /** 33 | * Lowest priority, called after all the other priorities. 34 | */ 35 | LOWEST = 4; 36 | 37 | /** 38 | * Array containing all the prioriy values. 39 | */ 40 | public static final byte[] VALUE_ARRAY; 41 | 42 | /** 43 | * Sets up the VALUE_ARRAY the first time anything in this class is called. 44 | */ 45 | static { 46 | VALUE_ARRAY = new byte[] { HIGHEST, HIGH, MEDIUM, LOW, LOWEST }; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Manager/NotificationManager.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Manager; 2 | 3 | 4 | import gq.vapulite.Vapu.modules.Module; 5 | import gq.vapulite.utils.Notification; 6 | 7 | import java.util.concurrent.CopyOnWriteArrayList; 8 | 9 | public class NotificationManager { 10 | private static final CopyOnWriteArrayList notifications = new CopyOnWriteArrayList<>(); 11 | 12 | public static void doRender(float wid, float hei) { 13 | float startY = hei - 23; 14 | for (Notification notification : notifications) { 15 | if (notification == null) 16 | continue; 17 | notification.draw(wid, startY); 18 | startY -= notification.getHeight() + 6; 19 | } 20 | notifications.removeIf(Notification::shouldDelete); 21 | } 22 | 23 | public static void show(String title, String message, Notification.Type type) { 24 | notifications.add(new Notification(title, message, type, 2500L)); 25 | } 26 | 27 | public static void show(String title, String message, Notification.Type type, long stayTime) { 28 | notifications.add(new Notification(title, message, type, stayTime)); 29 | } 30 | 31 | public static void show(String title, String message, Module module) { 32 | notifications.add(new Notification(title, message, Notification.Type.MODULE, 2500L, module)); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/render/Health.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.render; 2 | 3 | import gq.vapulite.Vapu.Client; 4 | import gq.vapulite.Vapu.ModuleType; 5 | import gq.vapulite.Vapu.modules.Module; 6 | import gq.vapulite.Vapu.utils.ColorUtils; 7 | import net.minecraft.client.gui.GuiMainMenu; 8 | import net.minecraft.client.gui.ScaledResolution; 9 | import net.minecraft.util.MathHelper; 10 | import net.minecraftforge.client.event.RenderGameOverlayEvent; 11 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 12 | import org.lwjgl.input.Keyboard; 13 | 14 | import java.util.ArrayList; 15 | import java.util.Comparator; 16 | 17 | public class Health extends Module { 18 | int fuck = 0; 19 | private int width; 20 | public Health() { 21 | super("Health", Keyboard.KEY_NONE, ModuleType.Render,"show your health on your screen"); 22 | Chinese="血量显示"; 23 | } 24 | 25 | @SubscribeEvent 26 | public void onRender(RenderGameOverlayEvent.Text event) { 27 | if (mc.thePlayer.getHealth() >= 0.0f && mc.thePlayer.getHealth() < 10.0f) { 28 | this.width = 3; 29 | } 30 | if (mc.thePlayer.getHealth() >= 10.0f && mc.thePlayer.getHealth() < 100.0f) { 31 | this.width = 5; 32 | } 33 | mc.fontRendererObj.drawStringWithShadow("♥" + MathHelper.ceiling_float_int(mc.thePlayer.getHealth()), (float) (new ScaledResolution(mc).getScaledWidth() / 2 - this.width), (float) (new ScaledResolution(mc).getScaledHeight() / 2 - 15), -1); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/utils/Colors.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.utils; 2 | 3 | import java.awt.*; 4 | 5 | public enum Colors { 6 | BLACK(-16711423), 7 | BLUE(-12028161), 8 | DARKBLUE(-12621684), 9 | GREEN(-9830551), 10 | DARKGREEN(-9320847), 11 | WHITE(-65794), 12 | AQUA(-7820064), 13 | DARKAQUA(-12621684), 14 | GREY(-9868951), 15 | DARKGREY(-14342875), 16 | RED(-65536), 17 | DARKRED(-8388608), 18 | ORANGE(-29696), 19 | DARKORANGE(-2263808), 20 | YELLOW(-256), 21 | DARKYELLOW(-2702025), 22 | MAGENTA(-18751), 23 | DARKMAGENTA(-2252579); 24 | 25 | public int c; 26 | 27 | Colors(int co) { 28 | this.c = co; 29 | } 30 | 31 | public static int getColor(Color color) { 32 | return getColor(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()); 33 | } 34 | 35 | public static int getColor(int brightness) { 36 | return getColor(brightness, brightness, brightness, 255); 37 | } 38 | 39 | public static int getColor(int brightness, int alpha) { 40 | return getColor(brightness, brightness, brightness, alpha); 41 | } 42 | 43 | public static int getColor(int red, int green, int blue) { 44 | return getColor(red, green, blue, 255); 45 | } 46 | 47 | public static int getColor(int red, int green, int blue, int alpha) { 48 | byte color = 0; 49 | int color1 = color | alpha << 24; 50 | color1 |= red << 16; 51 | color1 |= green << 8; 52 | color1 |= blue; 53 | return color1; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/world/FuckServer.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.world; 2 | 3 | import gq.vapulite.Manager.ModuleManager; 4 | import gq.vapulite.Vapu.Client; 5 | import gq.vapulite.Vapu.ModuleType; 6 | import gq.vapulite.Vapu.modules.Module; 7 | import gq.vapulite.Vapu.utils.Helper; 8 | import net.minecraft.client.Minecraft; 9 | import net.minecraft.network.play.client.C03PacketPlayer; 10 | import org.lwjgl.input.Keyboard; 11 | 12 | public class FuckServer extends Module { 13 | public FuckServer() { 14 | super("FuckServer", Keyboard.KEY_NONE, ModuleType.World,"send packet make server shutdown (work on small server only)"); 15 | Chinese="崩服务器"; 16 | } 17 | 18 | @Override 19 | public void enable(){ 20 | ServerFucker Fucker = new ServerFucker(); 21 | Fucker.start(); 22 | Helper.sendMessage("Fucking, Please wait..."); 23 | super.enable(); 24 | } 25 | 26 | class ServerFucker extends Thread{ 27 | @Override 28 | public void run(){ 29 | int i = 0; 30 | while (i < 800) { 31 | Minecraft.getMinecraft().thePlayer.sendQueue.addToSendQueue(new C03PacketPlayer.C04PacketPlayerPosition(1.7e+301,-999.0,0.0,true)); 32 | i = i + 1; 33 | try { 34 | Thread.sleep(10); 35 | } catch (InterruptedException e) { 36 | e.printStackTrace(); 37 | } 38 | } 39 | Helper.sendMessage("Server Crash Packet Send done."); 40 | ModuleManager.getModule("FuckServer").setState(false); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapuloader.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite; 2 | 3 | import java.lang.reflect.InvocationTargetException; 4 | import java.lang.reflect.Method; 5 | import java.net.URL; 6 | import java.net.URLClassLoader; 7 | 8 | public class Vapuloader { 9 | public static void inject(Thread[] threads) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { 10 | for (Thread thread : threads) { 11 | if(thread != null) { 12 | if(thread.getName().equals("Client thread")) { 13 | URLClassLoader classLoader = (URLClassLoader) thread.getContextClassLoader(); 14 | Thread.currentThread().setContextClassLoader(classLoader); 15 | try { 16 | Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class); 17 | if (method.isAccessible() == false) method.setAccessible(true); 18 | method.invoke(classLoader, Vapuloader.class.getProtectionDomain().getCodeSource().getLocation()); 19 | } catch (NoSuchMethodException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { 20 | // TODO Auto-generated catch block 21 | e.printStackTrace(); 22 | } 23 | Class clazz = classLoader.loadClass("gq.vapulite.Vapu.Client"); 24 | clazz.newInstance(); 25 | break; 26 | } 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/render/ESP.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.render; 2 | 3 | import gq.vapulite.Vapu.ModuleType; 4 | import gq.vapulite.Vapu.modules.Module; 5 | import gq.vapulite.Vapu.modules.combat.AntiBot; 6 | import gq.vapulite.Vapu.utils.ColorUtil; 7 | import gq.vapulite.Vapu.value.Option; 8 | import gq.vapulite.render.ColorUtils; 9 | import net.minecraft.entity.Entity; 10 | import net.minecraft.entity.player.EntityPlayer; 11 | import net.minecraftforge.client.event.RenderWorldLastEvent; 12 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 13 | import org.lwjgl.input.Keyboard; 14 | 15 | public class ESP extends Module { 16 | private Option invisible = new Option("Invisible","invisible", false); 17 | private Option redOnDalage = new Option("RedOnDalage","redOnDalage", true); 18 | public ESP() { 19 | super("ESP", Keyboard.KEY_NONE, ModuleType.Render,"Draw boxes for other player"); 20 | this.addValues(this.invisible,this.redOnDalage); 21 | Chinese="ExampleModule"; 22 | } 23 | @SubscribeEvent 24 | public void o(final RenderWorldLastEvent ev) { 25 | 26 | for (final EntityPlayer en : mc.theWorld.playerEntities) { 27 | if (en != mc.thePlayer && (!AntiBot.isServerBot(en))) { 28 | if (!this.invisible.getValue() && en.isInvisible()) { 29 | return; 30 | } 31 | int rgb = 0; 32 | rgb = ColorUtil.getRainbow().getRGB(); 33 | StorageESP.ee((Entity)en, rgb, this.redOnDalage.getValue(), (int) 2.0); 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/UpdateEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | 8 | public class UpdateEvent 9 | extends Event { 10 | public double x; 11 | public double y; 12 | public double z; 13 | public float yaw; 14 | public float pitch; 15 | public boolean ground; 16 | 17 | public UpdateEvent(double x, double y, double z, float yaw, float pitch, boolean ground) { 18 | this.x = x; 19 | this.y = y; 20 | this.z = z; 21 | this.yaw = yaw; 22 | this.pitch = pitch; 23 | this.ground = ground; 24 | } 25 | 26 | public double getX() { 27 | return this.x; 28 | } 29 | 30 | public double getY() { 31 | return this.y; 32 | } 33 | 34 | public double getZ() { 35 | return this.z; 36 | } 37 | 38 | public float getYaw() { 39 | return this.yaw; 40 | } 41 | 42 | public float getPitch() { 43 | return this.pitch; 44 | } 45 | 46 | public boolean isGround() { 47 | return this.ground; 48 | } 49 | 50 | public void setX(double x) { 51 | this.x = x; 52 | } 53 | 54 | public void setY(double y) { 55 | this.y = y; 56 | } 57 | 58 | public void setZ(double z) { 59 | this.z = z; 60 | } 61 | 62 | public void setYaw(float yaw) { 63 | this.yaw = yaw; 64 | } 65 | 66 | public void setPitch(float pitch) { 67 | this.pitch = pitch; 68 | } 69 | 70 | public void setGround(boolean ground) { 71 | this.ground = ground; 72 | } 73 | } 74 | 75 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/VapuMod/event/impl/CollisionEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Decompiled with CFR 0.152. 3 | */ 4 | package gq.vapulite.VapuMod.event.impl; 5 | 6 | import gq.vapulite.VapuMod.event.Event; 7 | import java.util.List; 8 | import net.minecraft.block.Block; 9 | import net.minecraft.util.AxisAlignedBB; 10 | import net.minecraft.util.BlockPos; 11 | 12 | public class CollisionEvent 13 | extends Event { 14 | private Block block; 15 | private BlockPos.MutableBlockPos blockPos; 16 | private List list; 17 | public double x = 0.0; 18 | public double y = 0.0; 19 | public double z = 0.0; 20 | 21 | public CollisionEvent(BlockPos.MutableBlockPos pos, Block block, List bList) { 22 | this.block = block; 23 | this.blockPos = pos; 24 | this.list = bList; 25 | this.x = this.x; 26 | this.y = this.y; 27 | this.z = this.z; 28 | } 29 | 30 | public Block getBlock() { 31 | return this.block; 32 | } 33 | 34 | public BlockPos.MutableBlockPos getBlockPos() { 35 | return this.blockPos; 36 | } 37 | 38 | public List getList() { 39 | return this.list; 40 | } 41 | 42 | public double getX() { 43 | return this.x; 44 | } 45 | 46 | public double getY() { 47 | return this.y; 48 | } 49 | 50 | public double getZ() { 51 | return this.z; 52 | } 53 | 54 | public void setBlock(Block block) { 55 | this.block = block; 56 | } 57 | 58 | public void setBlockPos(BlockPos.MutableBlockPos blockPos) { 59 | this.blockPos = blockPos; 60 | } 61 | 62 | public void setList(List boundingBox) { 63 | this.list = boundingBox; 64 | } 65 | } 66 | 67 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/values/type/NewMode.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.values.type; 2 | 3 | import gq.vapulite.values.Value; 4 | public class NewMode { 5 | private String[] modes; 6 | private String value; 7 | public String name; 8 | 9 | public NewMode(String name, String[] modes, String value) { 10 | this.name = name; 11 | this.modes = modes; 12 | this.setValue(value); 13 | } 14 | 15 | public String getName() { 16 | return name; 17 | } 18 | 19 | public void setName(String name) { 20 | this.name = name; 21 | } 22 | 23 | public void setValue(String value){ 24 | this.value = value; 25 | } 26 | 27 | public String getValue(){ 28 | return this.value; 29 | } 30 | 31 | public String[] getModes() { 32 | return this.modes; 33 | } 34 | 35 | public String getModeAsString() { 36 | return this.getValue(); 37 | } 38 | 39 | public void setMode(String mode) { 40 | String[] arrV = this.modes; 41 | int n = arrV.length; 42 | int n2 = 0; 43 | while (n2 < n) { 44 | String e = arrV[n2]; 45 | if (e.equalsIgnoreCase(mode)) { 46 | this.setValue(e); 47 | } 48 | ++n2; 49 | } 50 | } 51 | 52 | public boolean isValid(String name) { 53 | String[] arrV = this.modes; 54 | int n = arrV.length; 55 | int n2 = 0; 56 | while (n2 < n) { 57 | String e = arrV[n2]; 58 | if (e.equalsIgnoreCase(name)) { 59 | return true; 60 | } 61 | ++n2; 62 | } 63 | return false; 64 | } 65 | 66 | public boolean isCurrentMode(String str) { 67 | return this.value.equals(str); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/gui/BindScreen.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.gui; 2 | 3 | import gq.vapulite.Vapu.modules.Module; 4 | import net.minecraft.client.gui.GuiScreen; 5 | import net.minecraft.util.EnumChatFormatting; 6 | import org.lwjgl.input.Keyboard; 7 | 8 | import java.io.IOException; 9 | 10 | import static gq.vapulite.Vapu.Client.moduleManager; 11 | 12 | public class BindScreen extends GuiScreen { 13 | private final Module target; 14 | // private final GuiScreen parent; 15 | 16 | public BindScreen(Module module) { 17 | this.target = module; 18 | } 19 | 20 | @Override 21 | protected void keyTyped(char typedChar, int keyCode) throws IOException { 22 | super.keyTyped(typedChar, keyCode); 23 | 24 | if (keyCode == 1) { 25 | this.mc.thePlayer.closeScreen(); 26 | } 27 | 28 | for(Module m : moduleManager.getModules()) { 29 | if(keyCode == m.key) { 30 | this.drawCenteredString(this.fontRendererObj, EnumChatFormatting.RED+"This key is already bind to" + m.getName(), this.width / 2 - 20, 150, 0xFFFFFF); 31 | } else if(keyCode != 1) { 32 | this.target.setKey(keyCode); 33 | this.mc.thePlayer.closeScreen(); 34 | 35 | } 36 | } 37 | } 38 | 39 | @Override 40 | public void drawScreen(int mouseX, int mouseY, float partialTicks) { 41 | this.drawDefaultBackground(); 42 | this.drawCenteredString(this.fontRendererObj, "Listening, Press any key for bind " + EnumChatFormatting.YELLOW + target.getName(), this.width / 2, 150, 0xFFFFFF); 43 | this.drawCenteredString(this.fontRendererObj, "Using bind: "+Keyboard.getKeyName(target.getKey()), this.width / 2, 170, 0xFFFFFF); 44 | 45 | super.drawScreen(mouseX, mouseY, partialTicks); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/render/TranslateUtil.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.render; 2 | 3 | public class TranslateUtil { 4 | 5 | private float x; 6 | private float y; 7 | private long lastMS; 8 | 9 | public TranslateUtil(float x, float y) { 10 | this.x = x; 11 | this.y = y; 12 | this.lastMS = System.currentTimeMillis(); 13 | } 14 | 15 | public void interpolate(float targetX, float targetY, int xSpeed, int ySpeed) { 16 | long currentMS = System.currentTimeMillis(); 17 | long delta = currentMS - lastMS;//16.66666 18 | lastMS = currentMS; 19 | int deltaX = (int) (Math.abs(targetX - x) * 0.51f); 20 | int deltaY = (int) (Math.abs(targetY - y) * 0.51f); 21 | x = AnimationUtil.calculateCompensation(targetX, x, delta, deltaX); 22 | y = AnimationUtil.calculateCompensation(targetY, y, delta, deltaY); 23 | } 24 | 25 | public void interpolate(float targetX, float targetY, double speed) { 26 | long currentMS = System.currentTimeMillis(); 27 | long delta = currentMS - lastMS;//16.66666 28 | lastMS = currentMS; 29 | double deltaX = 0; 30 | double deltaY = 0; 31 | if(speed != 0){ 32 | deltaX = (Math.abs(targetX - x) * 0.35f)/(10/speed); 33 | deltaY = (Math.abs(targetY - y) * 0.35f)/(10/speed); 34 | } 35 | x = AnimationUtil.calculateCompensation(targetX, x, delta, deltaX); 36 | y = AnimationUtil.calculateCompensation(targetY, y, delta, deltaY); 37 | } 38 | 39 | public float getX() { 40 | return x; 41 | } 42 | 43 | public void setX(float x) { 44 | this.x = x; 45 | } 46 | 47 | public float getY() { 48 | return y; 49 | } 50 | 51 | public void setY(float y) { 52 | this.y = y; 53 | } 54 | 55 | } 56 | 57 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/value/NewMode.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.value; 2 | 3 | /** 4 | * @description: 新的Mode 适配JavaScript 5 | * @author: QianXia 6 | * @create: 2020/12/05 19:18 7 | **/ 8 | public class NewMode { 9 | private String[] modes; 10 | private String value; 11 | public String name; 12 | 13 | public NewMode(String name, String[] modes, String value) { 14 | this.name = name; 15 | this.modes = modes; 16 | this.setValue(value); 17 | } 18 | 19 | public String getName() { 20 | return name; 21 | } 22 | 23 | public void setName(String name) { 24 | this.name = name; 25 | } 26 | 27 | public void setValue(String value){ 28 | this.value = value; 29 | } 30 | 31 | public String getValue(){ 32 | return this.value; 33 | } 34 | 35 | public String[] getModes() { 36 | return this.modes; 37 | } 38 | 39 | public String getModeAsString() { 40 | return this.getValue(); 41 | } 42 | 43 | public void setMode(String mode) { 44 | String[] arrV = this.modes; 45 | int n = arrV.length; 46 | int n2 = 0; 47 | while (n2 < n) { 48 | String e = arrV[n2]; 49 | if (e.equalsIgnoreCase(mode)) { 50 | this.setValue(e); 51 | } 52 | ++n2; 53 | } 54 | } 55 | 56 | public boolean isValid(String name) { 57 | String[] arrV = this.modes; 58 | int n = arrV.length; 59 | int n2 = 0; 60 | while (n2 < n) { 61 | String e = arrV[n2]; 62 | if (e.equalsIgnoreCase(name)) { 63 | return true; 64 | } 65 | ++n2; 66 | } 67 | return false; 68 | } 69 | 70 | public boolean isCurrentMode(String str) { 71 | return this.value.equals(str); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/world/HidomocdTimer.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.world; 2 | 3 | import gq.vapulite.Vapu.ModuleType; 4 | import gq.vapulite.Vapu.modules.Module; 5 | import gq.vapulite.VapuMod.event.impl.TickEvent; 6 | import net.minecraft.client.Minecraft; 7 | import net.minecraft.util.Timer; 8 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 9 | import net.minecraftforge.fml.relauncher.ReflectionHelper; 10 | import org.lwjgl.input.Keyboard; 11 | 12 | import java.lang.reflect.Field; 13 | 14 | public class HidomocdTimer extends Module { 15 | public HidomocdTimer() { 16 | super("HidomocdTimer", Keyboard.KEY_NONE, ModuleType.World); 17 | Chinese="CE修改器特色Timer"; 18 | } 19 | 20 | @SubscribeEvent 21 | public void onTick(TickEvent e){ 22 | try { 23 | Field field = ReflectionHelper.findField(Minecraft.class, "timer", "field_71428_T"); 24 | field.setAccessible(true); 25 | Field field2 = ReflectionHelper.findField(Timer.class, "tickLength", "field_194149_e"); 26 | field2.setAccessible(true); 27 | field2.setFloat(field.get(Minecraft.getMinecraft()), 50 / 2.0F); 28 | } catch (Exception Exception) { 29 | Exception.printStackTrace(); 30 | } 31 | } 32 | 33 | @Override 34 | public void disable(){ 35 | try { 36 | Field field = ReflectionHelper.findField(Minecraft.class, "timer", "field_71428_T"); 37 | field.setAccessible(true); 38 | Field field2 = ReflectionHelper.findField(Timer.class, "tickLength", "field_194149_e"); 39 | field2.setAccessible(true); 40 | field2.setFloat(field.get(Minecraft.getMinecraft()), 50 / 1.0F); 41 | } catch (Exception Exception) { 42 | Exception.printStackTrace(); 43 | } 44 | super.disable(); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/render/Colors.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.render; 2 | 3 | import java.awt.*; 4 | 5 | public enum Colors { 6 | BLACK(-16711423), 7 | BLUE(-12028161), 8 | DARKBLUE(-12621684), 9 | GREEN(-9830551), 10 | DARKGREEN(-9320847), 11 | WHITE(-65794), 12 | AQUA(-7820064), 13 | DARKAQUA(-12621684), 14 | GREY(-9868951), 15 | DARKGREY(-14342875), 16 | RED(-65536), 17 | DARKRED(-8388608), 18 | ORANGE(-29696), 19 | DARKORANGE(-2263808), 20 | YELLOW(-256), 21 | DARKYELLOW(-2702025), 22 | MAGENTA(-18751), 23 | SLOWLY(-13220000), 24 | SLOWLY2(-106165216), 25 | SLOWLY3(-17791255), 26 | SLOWLY4(-15425034), 27 | DARKMAGENTA(-2252579); 28 | 29 | public int c; 30 | 31 | private Colors(int co) { 32 | this.c = co; 33 | } 34 | 35 | public static int getColor(Color color) { 36 | return getColor(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()); 37 | } 38 | 39 | public static int getColor(int brightness) { 40 | return getColor(brightness, brightness, brightness, 255); 41 | } 42 | 43 | public static int getColor(int brightness, int alpha) { 44 | return getColor(brightness, brightness, brightness, alpha); 45 | } 46 | 47 | public static int getColor(int red, int green, int blue) { 48 | return getColor(red, green, blue, 255); 49 | } 50 | 51 | public static int getColor(int red, int green, int blue, int alpha) { 52 | int color = 0; 53 | color |= alpha << 24; 54 | color |= red << 16; 55 | color |= green << 8; 56 | color |= blue; 57 | return color; 58 | } 59 | 60 | public static int getEnemyInvisible() { 61 | return getColor(255, 255, 0, 255); 62 | } 63 | 64 | public static int getEnemyVisible() { 65 | return getColor(255, 0, 0, 255); 66 | } 67 | 68 | } 69 | 70 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/render/AnimationUtil.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.render; 2 | 3 | public class AnimationUtil { 4 | private static float defaultSpeed = 0.125f; 5 | 6 | public static float calculateCompensation(float target, float current, long delta, double speed) { 7 | float diff = current - target; 8 | if (delta < 1L) { 9 | delta = 1L; 10 | } 11 | if (delta > 1000L) { 12 | delta = 16L; 13 | } 14 | if ((double) diff > speed) { 15 | double xD = speed * (double) delta / 16.0 < 0.5 ? 0.5 : speed * (double) delta / 16.0; 16 | if ((current = (float) ((double) current - xD)) < target) { 17 | current = target; 18 | } 19 | } else if ((double) diff < -speed) { 20 | double xD = speed * (double) delta / 16.0 < 0.5 ? 0.5 : speed * (double) delta / 16.0; 21 | if ((current = (float) ((double) current + xD)) > target) { 22 | current = target; 23 | } 24 | } else { 25 | current = target; 26 | } 27 | return current; 28 | } 29 | 30 | public static float mvoeUD(float current, float end, float minSpeed) { 31 | return AnimationUtil.moveUD(current, end, defaultSpeed, minSpeed); 32 | } 33 | 34 | public static float moveUD(float current, float end, float smoothSpeed, float minSpeed) { 35 | float movement = (end - current) * smoothSpeed; 36 | if (movement > 0.0f) { 37 | movement = Math.max((float) minSpeed, (float) movement); 38 | movement = Math.min((float) (end - current), (float) movement); 39 | } else if (movement < 0.0f) { 40 | movement = Math.min((float) (-minSpeed), (float) movement); 41 | movement = Math.max((float) (end - current), (float) movement); 42 | } 43 | return current + movement; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/modules/combat/AutoClicker.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.modules.combat; 2 | 3 | import gq.vapulite.Vapu.ModuleType; 4 | import gq.vapulite.Vapu.utils.TimerUtil; 5 | import gq.vapulite.Vapu.value.Numbers; 6 | import net.minecraft.client.Minecraft; 7 | import net.minecraft.client.settings.KeyBinding; 8 | import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 9 | import net.minecraftforge.fml.common.gameevent.TickEvent; 10 | import org.lwjgl.input.Keyboard; 11 | import gq.vapulite.Vapu.modules.Module; 12 | 13 | import java.util.concurrent.ThreadLocalRandom; 14 | 15 | public class AutoClicker extends Module { 16 | private final TimerUtil timer = new TimerUtil(); 17 | private Numbers cps = new Numbers("CPS", "Cps",5.0, 5.0, 20.0,1.0); 18 | public AutoClicker() { 19 | super("AutoClicker", Keyboard.KEY_K, ModuleType.Combat,"auto Attack when you hold the attack button"); 20 | this.addValues(this.cps); 21 | Chinese="连点器"; 22 | } 23 | 24 | @SubscribeEvent 25 | public void onTick(TickEvent event) { 26 | int key = mc.gameSettings.keyBindAttack.getKeyCode(); 27 | 28 | if (mc.gameSettings.keyBindAttack.isKeyDown()) { 29 | if (timer.delay(1000 / ThreadLocalRandom.current().nextInt((int) 4, (int) this.cps.getValue().intValue()))) { 30 | mc.thePlayer.swingItem(); 31 | KeyBinding.onTick(key); 32 | if(Minecraft.getMinecraft().objectMouseOver.entityHit != null) { 33 | mc.playerController.attackEntity(mc.thePlayer, Minecraft.getMinecraft().objectMouseOver.entityHit); 34 | // if(Client.AutoBlock){ 35 | // mc.thePlayer.getHeldItem().useItemRightClick(mc.theWorld, mc.thePlayer); 36 | // } 37 | } 38 | timer.reset(); 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/utils/ClassNodeUtils.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.utils; 2 | 3 | import java.io.File; 4 | import java.io.FileNotFoundException; 5 | import java.io.FileOutputStream; 6 | import java.io.IOException; 7 | 8 | import org.objectweb.asm.ClassReader; 9 | import org.objectweb.asm.ClassWriter; 10 | import org.objectweb.asm.tree.AbstractInsnNode; 11 | import org.objectweb.asm.tree.ClassNode; 12 | import org.objectweb.asm.tree.InsnList; 13 | 14 | 15 | 16 | public class ClassNodeUtils { 17 | public static ClassNode toClassNode(byte[] bytes ) { 18 | ClassReader classReader = new ClassReader(bytes); 19 | ClassNode classNode = new ClassNode(); 20 | classReader.accept(classNode, 0); 21 | 22 | return classNode; 23 | } 24 | 25 | 26 | public static byte[] toBytes(ClassNode classNode) { 27 | ClassWriter classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS); 28 | classNode.accept(classWriter); 29 | 30 | return classWriter.toByteArray(); 31 | } 32 | 33 | public static void writeFile(ClassNode classNode, String pathPre) throws FileNotFoundException, IOException { 34 | String path = classNode.name.replace(".", "\\").replace("/", "\\"); 35 | path = pathPre + path + ".class"; 36 | File file = new File(path); 37 | String folder = file.getParent(); 38 | 39 | try { 40 | if (folder != null && !folder.equals("")) { 41 | File file_folder = new File(folder); 42 | if (!file_folder.isDirectory()) { 43 | file_folder.mkdirs(); 44 | } 45 | } 46 | 47 | FileOutputStream fileOutputStream = new FileOutputStream(path); 48 | fileOutputStream.write(toBytes(classNode)); 49 | Tool.log("save class: %s", path); 50 | } 51 | catch (FileNotFoundException e) { 52 | throw e; 53 | } 54 | catch (IOException e) { 55 | throw e; 56 | } 57 | } 58 | 59 | public static InsnList toNodes(AbstractInsnNode... nodes) { 60 | InsnList insnList = new InsnList(); 61 | for(AbstractInsnNode node : nodes) 62 | insnList.add(node); 63 | return insnList; 64 | } 65 | } -------------------------------------------------------------------------------- /src/main/java/gq/vapulite/Vapu/gui/UI/Panel.java: -------------------------------------------------------------------------------- 1 | package gq.vapulite.Vapu.gui.UI; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | 7 | public class Panel { 8 | 9 | private String panelName; 10 | 11 | private int x; 12 | private int y; 13 | private int width; 14 | private int height; 15 | 16 | private int dragX; 17 | private int dragY; 18 | private boolean drag; 19 | 20 | private List