├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug.yml │ ├── crash.yml │ └── suggestion.yml ├── dependabot.yml └── workflows │ ├── dev_build.yml │ └── pull_request.yml ├── .gitignore ├── LICENSE ├── README.md ├── ac-tests.md ├── build.gradle ├── donations.md ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libs ├── baritone-api-fabric-1.10.2-10.jar ├── baritone-unoptimized-fabric-1.10.2.jar └── meteor-client-1.21.5-16.jar ├── settings.gradle └── src └── main ├── java └── nekiplay │ ├── Main.java │ ├── MixinPlugin.java │ ├── main │ ├── events │ │ ├── Cancellable.java │ │ ├── ClickWindowEvent.java │ │ ├── PlayerUseMultiplierEvent.java │ │ ├── RenderSignTextEvent.java │ │ ├── hud │ │ │ ├── DebugDrawTextEvent.java │ │ │ ├── RenderArmorBarEvent.java │ │ │ ├── RenderExperienceBarEvent.java │ │ │ ├── RenderExperienceLevelEvent.java │ │ │ ├── RenderFoodBarEvent.java │ │ │ ├── RenderHealthBarEvent.java │ │ │ └── RenderMountHealthBarEvent.java │ │ └── packets │ │ │ └── PacketEvent.java │ └── items │ │ └── ModItems.java │ └── meteorplus │ ├── MeteorPlusAddon.java │ ├── features │ ├── commands │ │ ├── BlockRawIdCommand.java │ │ ├── ClearInventoryCommand.java │ │ ├── EclipCommand.java │ │ ├── GPTCommand.java │ │ ├── GotoPlusCommand.java │ │ └── ItemRawIdCommand.java │ └── modules │ │ ├── combat │ │ ├── AntiBotPlus.java │ │ ├── AutoLeave.java │ │ ├── Hunt.java │ │ ├── Teams.java │ │ ├── TriggerBot.java │ │ ├── criticals │ │ │ ├── CriticalsModes.java │ │ │ └── CriticalsPlus.java │ │ ├── killaura │ │ │ ├── KillAuraPlus.java │ │ │ ├── KillAuraPlusMode.java │ │ │ ├── KillAuraPlusModes.java │ │ │ └── modes │ │ │ │ └── Matrix.java │ │ └── velocity │ │ │ ├── VelocityMode.java │ │ │ ├── VelocityModes.java │ │ │ ├── VelocityPlus.java │ │ │ └── modes │ │ │ ├── GrimCancel.java │ │ │ ├── GrimCancel_v2.java │ │ │ └── GrimSkip.java │ │ ├── integrations │ │ ├── MapIntegration.java │ │ └── WhereIsIt.java │ │ ├── misc │ │ ├── AutoAccept.java │ │ ├── ChatGPT.java │ │ ├── ChatPrefix.java │ │ └── CordinateProtector.java │ │ ├── movement │ │ ├── Freeze.java │ │ ├── InventoryMovePlus.java │ │ ├── NoJumpDelay.java │ │ ├── elytrafly │ │ │ ├── ElytraFlyMode.java │ │ │ ├── ElytraFlyModes.java │ │ │ ├── ElytraFlyPlus.java │ │ │ └── modes │ │ │ │ ├── Control.java │ │ │ │ └── Wasp.java │ │ ├── fastladder │ │ │ ├── FastLadderMode.java │ │ │ ├── FastLadderModes.java │ │ │ ├── FastLadderPlus.java │ │ │ └── modes │ │ │ │ └── Spartan.java │ │ ├── fly │ │ │ ├── FlyMode.java │ │ │ ├── FlyModes.java │ │ │ ├── FlyPlus.java │ │ │ └── modes │ │ │ │ ├── MatrixExploit.java │ │ │ │ ├── MatrixExploit2.java │ │ │ │ └── VulcanClip.java │ │ ├── jesus │ │ │ ├── JesusMode.java │ │ │ ├── JesusModes.java │ │ │ ├── JesusPlus.java │ │ │ └── modes │ │ │ │ ├── MatrixZoom.java │ │ │ │ ├── MatrixZoom2.java │ │ │ │ ├── NCP.java │ │ │ │ └── VulcanExploit.java │ │ ├── nofall │ │ │ ├── NoFallMode.java │ │ │ ├── NoFallModes.java │ │ │ ├── NoFallPlus.java │ │ │ └── modes │ │ │ │ ├── Eclip.java │ │ │ │ ├── ElytraFly.java │ │ │ │ ├── MatrixNew.java │ │ │ │ ├── No_Ground.java │ │ │ │ ├── No_Ground_Elytra.java │ │ │ │ ├── Verus.java │ │ │ │ ├── Vulcan.java │ │ │ │ └── Vulcan277.java │ │ ├── noslow │ │ │ ├── NoSlowMode.java │ │ │ ├── NoSlowModes.java │ │ │ ├── NoSlowPlus.java │ │ │ └── modes │ │ │ │ ├── Grim.java │ │ │ │ ├── GrimNew.java │ │ │ │ ├── Matrix.java │ │ │ │ ├── NCPStrict.java │ │ │ │ └── Vanila.java │ │ ├── scaffold │ │ │ ├── ScaffoldMode.java │ │ │ ├── ScaffoldModes.java │ │ │ └── ScaffoldPlus.java │ │ ├── speed │ │ │ ├── SpeedMode.java │ │ │ ├── SpeedModes.java │ │ │ ├── SpeedPlus.java │ │ │ └── modes │ │ │ │ ├── AACHop438.java │ │ │ │ ├── NCPHop.java │ │ │ │ ├── matrix │ │ │ │ ├── Matrix.java │ │ │ │ ├── Matrix6_7_0.java │ │ │ │ ├── MatrixExploit.java │ │ │ │ └── MatrixExploit2.java │ │ │ │ └── vulcan │ │ │ │ ├── Vulcan.java │ │ │ │ └── Vulcan_2_8_6.java │ │ └── spider │ │ │ ├── SpiderMode.java │ │ │ ├── SpiderModes.java │ │ │ ├── SpiderPlus.java │ │ │ └── modes │ │ │ ├── Eclip.java │ │ │ ├── Matrix.java │ │ │ └── Vulcan.java │ │ ├── player │ │ └── AutoDropPlus.java │ │ ├── render │ │ ├── EyeFinder.java │ │ ├── ItemFrameEsp.java │ │ ├── ItemHighlightPlus.java │ │ ├── KillEffect.java │ │ └── holograms │ │ │ ├── HologramData.java │ │ │ ├── HologramDataListed.java │ │ │ └── HologramModule.java │ │ └── world │ │ ├── BedrockStorageBruteforce.java │ │ ├── GhostBlockFixer.java │ │ ├── SafeMine.java │ │ ├── XrayBruteforce.java │ │ ├── autoobsidianmine │ │ ├── AutoObsidianFarm.java │ │ ├── AutoObsidianFarmMode.java │ │ ├── AutoObsidianFarmModes.java │ │ └── modes │ │ │ ├── Cauldrons.java │ │ │ └── Portals.java │ │ ├── customblocks │ │ ├── CustomBlockData.java │ │ ├── CustomBlocksModule.java │ │ └── PosData.java │ │ ├── timer │ │ ├── TimerMode.java │ │ ├── TimerModes.java │ │ ├── TimerPlus.java │ │ └── modes │ │ │ ├── NCP.java │ │ │ ├── NCPv2.java │ │ │ └── Vulcan.java │ │ └── zones │ │ ├── ZoneData.java │ │ └── ZonesModule.java │ ├── mixin │ ├── meteorclient │ │ ├── gui │ │ │ ├── DefaultSettingsWidgetFactoryMixin.java │ │ │ ├── TitleScreenCreditsMixin.java │ │ │ └── WBlockPosEditMixin.java │ │ ├── modules │ │ │ ├── BetterTooltipsMixin.java │ │ │ ├── BlockESPMixin.java │ │ │ ├── BreakIndicatorsMixin.java │ │ │ ├── CriticalsMixin.java │ │ │ ├── ESPMixin.java │ │ │ ├── FreecamMixin.java │ │ │ ├── ItemHighlightMixin.java │ │ │ ├── KillAuraMixin.java │ │ │ ├── MiddleClickExtraMixin.java │ │ │ ├── NameTagsMixin.java │ │ │ ├── NoRenderMixin.java │ │ │ ├── TracersMixin.java │ │ │ └── WaypointsModuleMixin.java │ │ └── utils │ │ │ └── misc │ │ │ └── KeybindMixin.java │ ├── minecraft │ │ ├── ClientConnectionAccessor.java │ │ ├── ClientPlayerInteractionManagerMixin.java │ │ ├── ShapelessRecipeAccessor.java │ │ ├── StringReaderMixin.java │ │ ├── entity │ │ │ ├── ClientPlayerEntityMixin.java │ │ │ ├── LivingEntityMixin.java │ │ │ ├── PlayerMoveC2SPacketAccessor.java │ │ │ └── ShulkerEntityAccessor.java │ │ └── hud │ │ │ ├── DebugHudMixin.java │ │ │ └── InGameHudMixin.java │ ├── whereisit │ │ └── RenderingMixin.java │ └── xaero │ │ └── worldmap │ │ ├── GuiMapMixin.java │ │ ├── MapPixelAccessor.java │ │ └── WaypointRendererMixin.java │ ├── mixinclasses │ ├── EditWaypointScreen.java │ ├── IModule.java │ ├── SpoofMode.java │ ├── WIcon.java │ └── WaypointsModuleModes.java │ ├── settings │ ├── ConfigModifier.java │ ├── MeteorPlusSettings.java │ └── items │ │ ├── ESPItemData.java │ │ ├── ESPItemDataScreen.java │ │ ├── HiglightItemData.java │ │ ├── HiglightItemDataScren.java │ │ ├── IItemData.java │ │ ├── ItemDataSetting.java │ │ └── ItemDataSettingScreen.java │ └── utils │ ├── BlockHelper.java │ ├── ColorRemover.java │ ├── CustomSpeedUtils.java │ ├── ElytraUtils.java │ ├── GameSensitivityUtils.java │ ├── GenerationBlock.java │ ├── MovementUtils.java │ ├── NumeralUtils.java │ ├── Perlin2D.java │ ├── RandomString.java │ ├── RaycastUtils.java │ ├── RotationUtils.java │ ├── TickTimer.java │ ├── algoritms │ ├── PerlinNoice.java │ ├── RandomUtils.java │ ├── ShadyRotation.java │ └── Smooth.java │ ├── math │ └── StopWatch.java │ └── xraybruteforce │ ├── XBlock.java │ ├── XChunk.java │ └── XGroup.java └── resources ├── assets └── meteorplus │ ├── chat │ └── icon.png │ ├── icon.png │ ├── items │ ├── diamond.json │ ├── logo.json │ ├── logo_mods.json │ ├── money.json │ └── star.json │ ├── lang │ ├── de_de.json │ ├── en_us.json │ ├── ru_ru.json │ ├── uk_ua.json │ ├── zh_cn.json │ └── zh_tw.json │ ├── logo.png │ ├── models │ └── item │ │ ├── diamond.json │ │ ├── logo.json │ │ ├── logo_mods.json │ │ ├── money.json │ │ └── star.json │ └── textures │ └── item │ ├── diamond.png │ ├── logo.png │ ├── logo_mods.png │ ├── money.png │ └── star.png ├── fabric.mod.json ├── meteorplus-whereisit.mixins.json ├── meteorplus-xaeroworldmap.mixins.json ├── meteorplus.accesswidener └── meteorplus.mixins.json /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | indent_style = tab 4 | insert_final_newline = true 5 | trim_trailing_whitespace = true 6 | indent_size = 4 7 | 8 | [*.{json, yml}] 9 | indent_size = 2 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.yml: -------------------------------------------------------------------------------- 1 | name: Bug 2 | description: Report a bug. 3 | title: '[Bug] ' 4 | labels: bug 5 | body: 6 | 7 | - type: textarea 8 | id: description 9 | attributes: 10 | label: Describe the bug 11 | description: | 12 | Provide as much information as possible, videos, crash reports, etc. 13 | validations: 14 | required: true 15 | - type: textarea 16 | id: reproducing 17 | attributes: 18 | label: Steps to reproduce 19 | description: How do you trigger this bug? 20 | render: bash 21 | validations: 22 | required: true 23 | - type: input 24 | id: mod-version 25 | attributes: 26 | label: Meteor Plus Version 27 | validations: 28 | required: true 29 | - type: input 30 | id: mc-version 31 | attributes: 32 | label: Minecraft Version 33 | validations: 34 | required: true 35 | - type: dropdown 36 | id: operating-systems 37 | attributes: 38 | label: Operating System 39 | options: 40 | - macOS 41 | - Windows 42 | - Linux 43 | validations: 44 | required: true 45 | - type: checkboxes 46 | id: prerequisites 47 | attributes: 48 | label: Before submitting a bug report 49 | options: 50 | - label: | 51 | This bug wasn't already reported. 52 | required: true 53 | - label: | 54 | This is a valid bug. 55 | required: true -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/crash.yml: -------------------------------------------------------------------------------- 1 | name: Crash 2 | description: Report a crash. 3 | title: '[Crash] ' 4 | labels: crash 5 | body: 6 | - type: textarea 7 | id: mods 8 | attributes: 9 | label: Mod list 10 | description: List of mods 11 | validations: 12 | required: true 13 | - type: textarea 14 | id: reproducing 15 | attributes: 16 | label: Steps to reproduce 17 | description: How do you trigger this bug? 18 | render: bash 19 | validations: 20 | required: true 21 | - type: input 22 | id: mod-version 23 | attributes: 24 | label: Meteor Plus Version 25 | validations: 26 | required: true 27 | - type: input 28 | id: mc-version 29 | attributes: 30 | label: Minecraft Version 31 | validations: 32 | required: true 33 | - type: input 34 | id: logs 35 | attributes: 36 | label: Logs (https://mclo.gs) 37 | validations: 38 | required: true 39 | - type: dropdown 40 | id: operating-systems 41 | attributes: 42 | label: Operating System 43 | options: 44 | - macOS 45 | - Windows 46 | - Linux 47 | validations: 48 | required: true 49 | - type: checkboxes 50 | id: prerequisites 51 | attributes: 52 | label: Before submitting a crash report 53 | options: 54 | - label: | 55 | This crash wasn't already reported. 56 | required: true 57 | - label: | 58 | This is a valid crash. 59 | required: true -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/suggestion.yml: -------------------------------------------------------------------------------- 1 | name: Suggestion 2 | description: Suggest a feature for this mod. 3 | title: '[Suggestion] ' 4 | labels: enhancement 5 | body: 6 | - type: textarea 7 | id: description 8 | attributes: 9 | label: Description 10 | description: Description of what feature you want to see. 11 | validations: 12 | required: true 13 | - type: checkboxes 14 | id: prerequisites 15 | attributes: 16 | label: Before submitting a suggestion 17 | options: 18 | - label: | 19 | This feature doesn't already exist. 20 | required: true 21 | - label: | 22 | This wasn't already suggested. 23 | required: true -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | 4 | - package-ecosystem: "gradle" 5 | directory: "/" 6 | schedule: 7 | interval: "daily" 8 | commit-message: 9 | prefix: "gradle" 10 | include: "scope" 11 | 12 | - package-ecosystem: "github-actions" 13 | directory: "/" 14 | schedule: 15 | interval: "daily" 16 | commit-message: 17 | prefix: "github-actions" 18 | include: "scope" 19 | -------------------------------------------------------------------------------- /.github/workflows/dev_build.yml: -------------------------------------------------------------------------------- 1 | name: Development Build 2 | on: push 3 | 4 | jobs: 5 | build: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v4 9 | - uses: actions/setup-java@v4 10 | with: 11 | java-version: 21 12 | distribution: adopt 13 | - name: Make gradlew executable 14 | run: chmod +x ./gradlew 15 | 16 | - name: Build 17 | run: ./gradlew build 18 | 19 | - name: Archive Artifacts 20 | uses: actions/upload-artifact@v4 21 | with: 22 | name: Artifacts 23 | path: ./build/libs/ 24 | 25 | - name: Release 26 | uses: marvinpinto/action-automatic-releases@latest 27 | with: 28 | repo_token: '${{ secrets.GITHUB_TOKEN }}' 29 | automatic_release_tag: "1.21.5_1.0.9.5" 30 | prerelease: true 31 | title: "1.21.5 | 1.0.9.5" 32 | files: | 33 | ./build/libs/*.jar 34 | -------------------------------------------------------------------------------- /.github/workflows/pull_request.yml: -------------------------------------------------------------------------------- 1 | name: Build Pull Request 2 | on: pull_request 3 | 4 | jobs: 5 | build: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v4 9 | - uses: actions/setup-java@v4 10 | with: 11 | java-version: 21 12 | distribution: adopt 13 | - name: Make gradlew executable 14 | run: chmod +x ./gradlew 15 | - name: Build 16 | run: ./gradlew build 17 | - name: Upload artifacts 18 | uses: actions/upload-artifact@v4.4.3 19 | with: 20 | name: build-artifacts 21 | path: build/libs 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # gradle 2 | 3 | .gradle/ 4 | build/ 5 | out/ 6 | classes/ 7 | 8 | # eclipse 9 | 10 | *.launch 11 | 12 | # idea 13 | 14 | .idea/ 15 | *.iml 16 | *.ipr 17 | *.iws 18 | 19 | # vscode 20 | 21 | .settings/ 22 | .vscode/ 23 | bin/ 24 | .classpath 25 | .project 26 | 27 | # macos 28 | 29 | *.DS_Store 30 | 31 | # fabric 32 | 33 | run/ 34 | src/main/java/META-INF/MANIFEST.MF 35 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id "fabric-loom" version "1.10-SNAPSHOT" 3 | id "maven-publish" 4 | } 5 | 6 | sourceCompatibility = targetCompatibility = JavaVersion.VERSION_21 7 | 8 | archivesBaseName = project.archives_base_name 9 | version = project.mod_version 10 | group = project.maven_group 11 | 12 | configurations.all { 13 | // Check for snapshots more frequently than Gradle's default of 1 day. 0 = every build. 14 | resolutionStrategy.cacheChangingModulesFor 0, 'seconds' 15 | } 16 | 17 | repositories { 18 | maven { 19 | url "https://jm.gserv.me/repository/maven-public/" 20 | content { 21 | includeGroup "info.journeymap" 22 | } 23 | } 24 | maven { 25 | url "https://api.modrinth.com/maven/" 26 | content { 27 | includeGroup "maven.modrinth" 28 | } 29 | } 30 | maven { url = "https://www.cursemaven.com" } 31 | maven { url = "https://masa.dy.fi/maven" } 32 | // YACL 33 | maven { 34 | url = uri("https://maven.isxander.dev/releases") 35 | } 36 | // YACL Snapshots 37 | maven { 38 | name = "Xander Snapshot Maven" 39 | url = uri("https://maven.isxander.dev/snapshots") 40 | } 41 | // Where Is It, JackFredLib 42 | maven { 43 | url = uri("https://maven.jackf.red/releases/") 44 | } 45 | mavenCentral() 46 | gradlePluginPortal() 47 | } 48 | 49 | dependencies { 50 | // Fabric 51 | minecraft "com.mojang:minecraft:${project.minecraft_version}" 52 | mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" 53 | modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" 54 | 55 | // Mixin extras 56 | include(implementation(annotationProcessor("io.github.llamalad7:mixinextras-fabric:0.4.1"))) 57 | 58 | // Meteor Client 59 | modImplementation files("libs\\baritone-unoptimized-fabric-1.10.2.jar") 60 | modImplementation files("libs\\meteor-client-1.21.5-16.jar") 61 | 62 | // Xaero's Mods 63 | modCompileOnly "maven.modrinth:xaeros-world-map:${project.xwm_fabric_version}" // Xaero's World Map 64 | modCompileOnly "maven.modrinth:xaeros-minimap:${project.xmm_fabric_version}" // Xaero's Minimap 65 | 66 | // Chest Tracker 67 | modImplementation("red.jackf:whereisit:${project.where_is_it_version}") 68 | } 69 | 70 | loom { 71 | accessWidenerPath = file("src/main/resources/meteorplus.accesswidener") 72 | } 73 | 74 | processResources { 75 | filesMatching("fabric.mod.json") { 76 | expand "version": project.mod_version, "mc_version": project.minecraft_version, "gh_hash": (System.getenv("GITHUB_SHA") ?: "") 77 | } 78 | } 79 | 80 | tasks.withType(JavaCompile).configureEach { 81 | it.options.encoding("UTF-8") 82 | } 83 | -------------------------------------------------------------------------------- /donations.md: -------------------------------------------------------------------------------- 1 | ## Donation addresses 2 | | Cryptocurrency | Addresses | 3 | |--------------------|-----------------------------------------------------------------------| 4 | | **Bitcoin (BTC)** | **bc1qyg8u8r7z9235h7y9982kuz85wp582xdmkhm0hc** | 5 | | **Ethereum (EHT)** | **0x70B44EEdf0614d9fAaa2BC74f342E056919cEA2E** | 6 | | **Monero (XMR)** | **49UpmgkdVKfF8deRceETiShuvW8BLGA59RkTRKbiwnxD4RAPUFebaztFQH9AbQuFxi5NjKoAbFcXpVRUosnXhTJ3PXrKAqv** | 7 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx2G 2 | 3 | # Fabric (https://fabricmc.net/versions.html) 4 | minecraft_version=1.21.5 5 | yarn_mappings=1.21.5+build.1 6 | loader_version=0.16.10 7 | 8 | # Mod Properties 9 | mod_version=1.21.5_1.0.9.5 10 | maven_group=nekiplay.meteorplus 11 | archives_base_name=meteor-plus 12 | 13 | # Dependency Versions 14 | 15 | # Xaero's Mods 16 | # Xaero's World Map (https://modrinth.com/mod/xaeros-world-map/versions) 17 | xwm_fabric_version=1.39.8_Fabric_1.21.5 18 | # Xaero's Minimap (https://modrinth.com/mod/xaeros-minimap/versions) 19 | xmm_fabric_version=25.2.5_Fabric_1.21.5 20 | 21 | # Where Is It (https://modrinth.com/mod/where-is-it/versions) 22 | where_is_it_version=2.6.4+1.21.2 23 | # YetAnotherConfigLib (https://github.com/JackFred2/WhereIsIt/blob/1.20.6/gradle.properties) 24 | yacl_version=3.3.2+1.20.4+update.1.20.5-SNAPSHOT+update.1.20.5-SNAPSHOT 25 | 26 | # MaLiLib (https://www.curseforge.com/minecraft/mc-mods/malilib/files/all?page=1&pageSize=20) 27 | malilib_fileid=4946328 28 | malilib_projectid=303119 29 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if "%ERRORLEVEL%"=="0" goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 84 | exit /b 1 85 | 86 | :mainEnd 87 | if "%OS%"=="Windows_NT" endlocal 88 | 89 | :omega 90 | -------------------------------------------------------------------------------- /libs/baritone-api-fabric-1.10.2-10.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/libs/baritone-api-fabric-1.10.2-10.jar -------------------------------------------------------------------------------- /libs/baritone-unoptimized-fabric-1.10.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/libs/baritone-unoptimized-fabric-1.10.2.jar -------------------------------------------------------------------------------- /libs/meteor-client-1.21.5-16.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/libs/meteor-client-1.21.5-16.jar -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | maven { 4 | name = 'Fabric' 5 | url = 'https://maven.fabricmc.net/' 6 | } 7 | mavenCentral() 8 | gradlePluginPortal() 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/Main.java: -------------------------------------------------------------------------------- 1 | package nekiplay; 2 | 3 | import nekiplay.main.items.ModItems; 4 | import net.fabricmc.api.ModInitializer; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | public class Main implements ModInitializer { 9 | public static final Logger LOG = LoggerFactory.getLogger(Main.class); 10 | public static final String METEOR_LOGPREFIX = "[Meteor+]"; 11 | @Override 12 | public void onInitialize() { 13 | LOG.info(METEOR_LOGPREFIX + " Initializing items..."); 14 | ModItems.initialize(); 15 | LOG.info(METEOR_LOGPREFIX + " Loaded items"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/Cancellable.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events; 2 | 3 | import meteordevelopment.orbit.ICancellable; 4 | 5 | public class Cancellable implements ICancellable { 6 | private boolean cancelled = false; 7 | 8 | @Override 9 | public void setCancelled(boolean cancelled) { 10 | this.cancelled = cancelled; 11 | } 12 | 13 | @Override 14 | public boolean isCancelled() { 15 | return cancelled; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/ClickWindowEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events; 2 | 3 | import net.minecraft.screen.slot.SlotActionType; 4 | 5 | public class ClickWindowEvent extends Cancellable { 6 | private static final ClickWindowEvent INSTANCE = new ClickWindowEvent(); 7 | 8 | public int windowId; 9 | public int slotId; 10 | public int mouseButtonClicked; 11 | public SlotActionType mode; 12 | 13 | public static ClickWindowEvent get(int windowId, int slotId, int mouseButtonClicked, SlotActionType mode) { 14 | INSTANCE.setCancelled(false); 15 | INSTANCE.windowId = windowId; 16 | INSTANCE.mouseButtonClicked = mouseButtonClicked;; 17 | INSTANCE.slotId = slotId; 18 | INSTANCE.mode = mode; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/PlayerUseMultiplierEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events; 2 | 3 | public class PlayerUseMultiplierEvent { 4 | private float _forward = 0.2f; 5 | private float _sideways = 0.2f; 6 | public PlayerUseMultiplierEvent(float forward, float sideways) { 7 | this._forward = forward; 8 | this._sideways = sideways; 9 | } 10 | public void setForward(float forward) { 11 | _forward = forward; 12 | } 13 | public float getForward() { 14 | return _forward; 15 | } 16 | public void setSideways(float sideways) { 17 | _sideways = sideways; 18 | } 19 | public float getSideways() { 20 | return _sideways; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/RenderSignTextEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events; 2 | 3 | import net.minecraft.block.entity.SignText; 4 | import net.minecraft.client.render.VertexConsumerProvider; 5 | import net.minecraft.client.util.math.MatrixStack; 6 | import net.minecraft.util.math.BlockPos; 7 | 8 | public class RenderSignTextEvent { 9 | private static final RenderSignTextEvent INSTANCE = new RenderSignTextEvent(); 10 | 11 | public BlockPos pos; 12 | public SignText signText; 13 | public MatrixStack matrices; 14 | public VertexConsumerProvider vertexConsumers; 15 | public int light; 16 | public int lineHeight; 17 | public int lineWidth; 18 | public boolean front; 19 | 20 | public static RenderSignTextEvent get(BlockPos pos, SignText signText, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int lineHeight, int lineWidth, boolean front) { 21 | INSTANCE.pos = pos; 22 | INSTANCE.signText = signText; 23 | INSTANCE.matrices = matrices; 24 | INSTANCE.vertexConsumers = vertexConsumers; 25 | INSTANCE.light = light; 26 | INSTANCE.lineHeight = lineHeight; 27 | INSTANCE.lineWidth = lineWidth; 28 | INSTANCE.front = front; 29 | return INSTANCE; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/hud/DebugDrawTextEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events.hud; 2 | 3 | import nekiplay.main.events.Cancellable; 4 | import net.minecraft.util.hit.HitResult; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | public class DebugDrawTextEvent extends Cancellable { 10 | 11 | private static final DebugDrawTextEvent INSTANCE = new DebugDrawTextEvent(); 12 | private List lines = new ArrayList(); 13 | 14 | public List getLines() { return lines; } 15 | private boolean isLeft = false; 16 | public boolean isLeft() { return isLeft; } 17 | 18 | 19 | private HitResult blockHit; 20 | private HitResult fluidHit; 21 | public HitResult blockHit() { return blockHit; } 22 | public HitResult fluidHit() { return fluidHit; } 23 | 24 | public static DebugDrawTextEvent get(List lines, boolean isLeft, HitResult blockHit, HitResult fluidHit) { 25 | INSTANCE.lines = lines; 26 | INSTANCE.isLeft = isLeft; 27 | INSTANCE.blockHit = blockHit; 28 | INSTANCE.fluidHit = fluidHit; 29 | return INSTANCE; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/hud/RenderArmorBarEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events.hud; 2 | import nekiplay.main.events.Cancellable; 3 | import net.minecraft.client.gui.DrawContext; 4 | import net.minecraft.entity.player.PlayerEntity; 5 | 6 | public class RenderArmorBarEvent extends Cancellable { 7 | private static final RenderArmorBarEvent INSTANCE = new RenderArmorBarEvent(); 8 | private DrawContext context; 9 | private PlayerEntity player; 10 | private int i; 11 | private int j; 12 | private int k; 13 | private int x; 14 | public static RenderArmorBarEvent get(DrawContext context, PlayerEntity player, int i, int j, int k, int x) { 15 | INSTANCE.context = context; 16 | INSTANCE.player = player; 17 | INSTANCE.i = i; 18 | INSTANCE.j = j; 19 | INSTANCE.k = k; 20 | INSTANCE.x = x; 21 | return INSTANCE; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/hud/RenderExperienceBarEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events.hud; 2 | import nekiplay.main.events.Cancellable; 3 | import net.minecraft.client.gui.DrawContext; 4 | 5 | public class RenderExperienceBarEvent extends Cancellable { 6 | private static final RenderExperienceBarEvent INSTANCE = new RenderExperienceBarEvent(); 7 | private DrawContext context; 8 | private int x; 9 | public static RenderExperienceBarEvent get(DrawContext context, int x) { 10 | INSTANCE.context = context; 11 | INSTANCE.x = x; 12 | return INSTANCE; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/hud/RenderExperienceLevelEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events.hud; 2 | import nekiplay.main.events.Cancellable; 3 | import net.minecraft.client.gui.DrawContext; 4 | import net.minecraft.client.render.RenderTickCounter; 5 | import net.minecraft.entity.player.PlayerEntity; 6 | 7 | public class RenderExperienceLevelEvent extends Cancellable { 8 | private static final RenderExperienceLevelEvent INSTANCE = new RenderExperienceLevelEvent(); 9 | private DrawContext context; 10 | private RenderTickCounter tickCounter; 11 | public static RenderExperienceLevelEvent get(DrawContext context, RenderTickCounter tickCounter) { 12 | INSTANCE.context = context; 13 | INSTANCE.tickCounter = tickCounter; 14 | return INSTANCE; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/hud/RenderFoodBarEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events.hud; 2 | import nekiplay.main.events.Cancellable; 3 | import net.minecraft.client.gui.DrawContext; 4 | import net.minecraft.client.render.RenderTickCounter; 5 | import net.minecraft.entity.player.PlayerEntity; 6 | 7 | public class RenderFoodBarEvent extends Cancellable { 8 | private static final RenderFoodBarEvent INSTANCE = new RenderFoodBarEvent(); 9 | private DrawContext context; 10 | private PlayerEntity player; 11 | private int top; 12 | private int right; 13 | public static RenderFoodBarEvent get(DrawContext context, PlayerEntity player, int top, int right) { 14 | INSTANCE.context = context; 15 | INSTANCE.player = player; 16 | INSTANCE.top = top; 17 | INSTANCE.right = right; 18 | return INSTANCE; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/hud/RenderHealthBarEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events.hud; 2 | import nekiplay.main.events.Cancellable; 3 | import net.minecraft.client.gui.DrawContext; 4 | import net.minecraft.entity.player.PlayerEntity; 5 | 6 | public class RenderHealthBarEvent extends Cancellable { 7 | private static final RenderHealthBarEvent INSTANCE = new RenderHealthBarEvent(); 8 | private DrawContext context; 9 | private PlayerEntity player; 10 | private int x; 11 | private int y; 12 | private int lines; 13 | private int regeneratingHeartIndex; 14 | private float maxHealth; 15 | private int lastHealth; 16 | private int health; 17 | private int absorption; 18 | private boolean blinking; 19 | public static RenderHealthBarEvent get(DrawContext context, PlayerEntity player, int x, int y, int lines, int regeneratingHeartIndex, float maxHealth, int lastHealth, int health, int absorption, boolean blinking) { 20 | INSTANCE.context = context; 21 | INSTANCE.player = player; 22 | INSTANCE.x = x; 23 | INSTANCE.y = y; 24 | INSTANCE.lines = lines; 25 | INSTANCE.regeneratingHeartIndex = regeneratingHeartIndex; 26 | INSTANCE.maxHealth = maxHealth; 27 | INSTANCE.lastHealth = lastHealth; 28 | INSTANCE.health = health; 29 | INSTANCE.absorption = absorption; 30 | INSTANCE.blinking = blinking; 31 | return INSTANCE; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/hud/RenderMountHealthBarEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events.hud; 2 | import nekiplay.main.events.Cancellable; 3 | import net.minecraft.client.gui.DrawContext; 4 | import net.minecraft.entity.player.PlayerEntity; 5 | 6 | public class RenderMountHealthBarEvent extends Cancellable { 7 | private static final RenderMountHealthBarEvent INSTANCE = new RenderMountHealthBarEvent(); 8 | private DrawContext context; 9 | public static RenderMountHealthBarEvent get(DrawContext context) { 10 | INSTANCE.context = context; 11 | return INSTANCE; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/events/packets/PacketEvent.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.events.packets; 2 | 3 | import nekiplay.main.events.Cancellable; 4 | import net.minecraft.network.listener.PacketListener; 5 | import net.minecraft.network.packet.Packet; 6 | 7 | public class PacketEvent { 8 | public static class Receive extends Cancellable { 9 | private static final Receive INSTANCE = new Receive(); 10 | 11 | public Packet packet; 12 | public PacketListener packetListener; 13 | 14 | public static Receive get(Packet packet, PacketListener listener) { 15 | INSTANCE.setCancelled(false); 16 | INSTANCE.packet = packet; 17 | INSTANCE.packetListener = listener; 18 | return INSTANCE; 19 | } 20 | } 21 | 22 | public static class Send extends Cancellable { 23 | private static final Send INSTANCE = new Send(); 24 | 25 | public Packet packet; 26 | 27 | public static Send get(Packet packet) { 28 | INSTANCE.setCancelled(false); 29 | INSTANCE.packet = packet; 30 | return INSTANCE; 31 | } 32 | } 33 | 34 | public static class Sent { 35 | private static final Sent INSTANCE = new Sent(); 36 | 37 | public Packet packet; 38 | 39 | public static Sent get(Packet packet) { 40 | INSTANCE.packet = packet; 41 | return INSTANCE; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/main/items/ModItems.java: -------------------------------------------------------------------------------- 1 | package nekiplay.main.items; 2 | 3 | import net.minecraft.item.Item; 4 | import net.minecraft.item.Items; 5 | import net.minecraft.registry.RegistryKey; 6 | import net.minecraft.registry.RegistryKeys; 7 | import net.minecraft.util.Identifier; 8 | 9 | import java.util.function.Function; 10 | 11 | public class ModItems { 12 | 13 | public static Item register(String path, Function factory, Item.Settings settings) { 14 | final RegistryKey registryKey = RegistryKey.of(RegistryKeys.ITEM, Identifier.of("meteorplus", path)); 15 | return Items.register(registryKey, factory, settings); 16 | } 17 | public static Item METEOR_PLUS_LOGO_ITEM = null; 18 | public static Item METEOR_PLUS_LOGO_MODS_ITEM = null; 19 | 20 | public static Item METEOR_PLUS_STAR_ITEM = null; 21 | public static Item METEOR_PLUS_DIAMOND_ITEM = null; 22 | public static Item METEOR_PLUS_MONEY_ITEM = null; 23 | 24 | public static void initialize() { 25 | METEOR_PLUS_LOGO_ITEM = register("logo", Item::new, new Item.Settings()); 26 | METEOR_PLUS_LOGO_MODS_ITEM = register("logo_mods", Item::new, new Item.Settings()); 27 | 28 | METEOR_PLUS_STAR_ITEM = register("star", Item::new, new Item.Settings()); 29 | METEOR_PLUS_DIAMOND_ITEM = register("diamond", Item::new, new Item.Settings()); 30 | METEOR_PLUS_MONEY_ITEM = register("money", Item::new, new Item.Settings()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/commands/BlockRawIdCommand.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.commands; 2 | 3 | import com.mojang.brigadier.builder.LiteralArgumentBuilder; 4 | import meteordevelopment.meteorclient.commands.Command; 5 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 6 | import net.minecraft.block.Block; 7 | import net.minecraft.block.BlockState; 8 | import net.minecraft.command.CommandSource; 9 | import net.minecraft.item.Item; 10 | import net.minecraft.item.ItemStack; 11 | import net.minecraft.text.Text; 12 | import net.minecraft.util.hit.HitResult; 13 | import net.minecraft.util.math.BlockPos; 14 | 15 | public class BlockRawIdCommand extends Command { 16 | public BlockRawIdCommand() { 17 | super("rawblockid", "Get raw block id under mouse"); 18 | } 19 | public void build(LiteralArgumentBuilder builder) { 20 | builder.executes(context -> { 21 | if (mc.crosshairTarget != null && mc.crosshairTarget.getType() == HitResult.Type.BLOCK) { 22 | BlockPos pos = new BlockPos((int) mc.crosshairTarget.getPos().x, (int) mc.crosshairTarget.getPos().y, (int) mc.crosshairTarget.getPos().z); 23 | BlockState state = mc.world.getBlockState(pos); 24 | int raw_id = Block.getRawIdFromState(state); 25 | info(String.valueOf(raw_id)); 26 | } 27 | return SINGLE_SUCCESS; 28 | }); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/commands/ClearInventoryCommand.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.commands; 2 | 3 | import com.mojang.brigadier.builder.LiteralArgumentBuilder; 4 | import meteordevelopment.meteorclient.commands.Command; 5 | import net.minecraft.command.CommandSource; 6 | import net.minecraft.item.ItemStack; 7 | import net.minecraft.screen.slot.SlotActionType; 8 | 9 | import static com.mojang.brigadier.Command.SINGLE_SUCCESS; 10 | import static meteordevelopment.meteorclient.MeteorClient.mc; 11 | import static nekiplay.meteorplus.features.modules.player.AutoDropPlus.invIndexToSlotId; 12 | 13 | public class ClearInventoryCommand extends Command { 14 | public ClearInventoryCommand() { 15 | super("clearinv", "Clear inventory"); 16 | } 17 | public void build(LiteralArgumentBuilder builder) { 18 | builder.executes(context -> { 19 | for (int i = 0; i < mc.player.getInventory().size(); i++) { 20 | ItemStack itemStack = mc.player.getInventory().getStack(i); 21 | if (itemStack != null) { 22 | mc.interactionManager.clickSlot(0, invIndexToSlotId(i), 300, SlotActionType.SWAP, mc.player); 23 | } 24 | } 25 | return SINGLE_SUCCESS; 26 | }); 27 | 28 | 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/commands/ItemRawIdCommand.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.commands; 2 | 3 | import com.mojang.brigadier.builder.LiteralArgumentBuilder; 4 | import meteordevelopment.meteorclient.commands.Command; 5 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 6 | import net.minecraft.command.CommandSource; 7 | import net.minecraft.item.Item; 8 | import net.minecraft.item.ItemStack; 9 | import net.minecraft.text.Text; 10 | 11 | import static com.mojang.brigadier.Command.SINGLE_SUCCESS; 12 | import static meteordevelopment.meteorclient.MeteorClient.mc; 13 | 14 | public class ItemRawIdCommand extends Command { 15 | public ItemRawIdCommand() { 16 | super("rawitemid", "Get raw item id"); 17 | } 18 | 19 | public void build(LiteralArgumentBuilder builder) { 20 | builder.executes(context -> { 21 | ItemStack itemStack = mc.player.getMainHandStack(); 22 | if (itemStack != null) { 23 | int raw_id = Item.getRawId(itemStack.getItem()); 24 | ChatUtils.sendMsg(Text.of("Raw Item ID: " + raw_id)); 25 | } 26 | return SINGLE_SUCCESS; 27 | }); 28 | 29 | 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/Teams.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat; 2 | 3 | import meteordevelopment.meteorclient.settings.BoolSetting; 4 | import meteordevelopment.meteorclient.settings.Setting; 5 | import meteordevelopment.meteorclient.settings.SettingGroup; 6 | import meteordevelopment.meteorclient.systems.modules.Categories; 7 | import meteordevelopment.meteorclient.systems.modules.Module; 8 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 9 | import net.minecraft.client.network.ClientPlayerEntity; 10 | import net.minecraft.entity.Entity; 11 | import net.minecraft.entity.LivingEntity; 12 | import net.minecraft.text.Text; 13 | 14 | import java.nio.charset.CharsetEncoder; 15 | 16 | public class Teams extends Module { 17 | public Teams() { 18 | super(Categories.Combat, "teams", "Check if [entity] is in your own team using scoreboard, name color or team prefix."); 19 | } 20 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 21 | private final Setting scoreBoardTeam = sgGeneral.add(new BoolSetting.Builder() 22 | .name("Scoreboard-Team") 23 | .defaultValue(true) 24 | .build() 25 | ); 26 | 27 | private final Setting colorTeam = sgGeneral.add(new BoolSetting.Builder() 28 | .name("color") 29 | .defaultValue(true) 30 | .build() 31 | ); 32 | 33 | private final Setting gommeSkyWars = sgGeneral.add(new BoolSetting.Builder() 34 | .name("GommeHD-SkyWars") 35 | .defaultValue(false) 36 | .build() 37 | ); 38 | public boolean isInYourTeam(Entity entity) { 39 | if (entity instanceof LivingEntity) { 40 | return isInYourTeam((LivingEntity) entity); 41 | } 42 | return false; 43 | } 44 | public boolean isInYourTeam(LivingEntity entity) { 45 | ClientPlayerEntity player = mc.player; 46 | if (player == null) { return false; } 47 | 48 | if (!isActive()) { return false; } 49 | 50 | if (scoreBoardTeam.get() && player.getScoreboardTeam() != null && entity.getScoreboardTeam() != null && player.isTeamPlayer(entity.getScoreboardTeam())) { 51 | return true; 52 | } 53 | 54 | Text displayName = player.getDisplayName(); 55 | if (gommeSkyWars.get() && displayName != null && entity.getDisplayName() != null) { 56 | String targetName = entity.getDisplayName().getString().replaceAll("§r", ""); 57 | String clientName = displayName.getString().replaceAll("§r", ""); 58 | 59 | if (targetName.startsWith("T") && clientName.startsWith("T")) 60 | 61 | if (Character.isDigit(targetName.charAt(1)) && Character.isDigit(clientName.charAt(1))) 62 | return targetName.charAt(1) == clientName.charAt(1); 63 | } 64 | 65 | if (colorTeam.get() && displayName != null && entity.getDisplayName() != null) { 66 | String targetName = entity.getDisplayName().getString().replaceAll("§r", ""); 67 | String clientName = displayName.getString().replaceAll("§r", ""); 68 | 69 | return targetName.startsWith("§" + clientName.charAt(1)); 70 | } 71 | 72 | return false; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/criticals/CriticalsModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat.criticals; 2 | 3 | public enum CriticalsModes { 4 | Smart, 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/criticals/CriticalsPlus.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat.criticals; 2 | 3 | import meteordevelopment.meteorclient.systems.modules.Categories; 4 | import meteordevelopment.meteorclient.systems.modules.Module; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import meteordevelopment.meteorclient.systems.modules.combat.Criticals; 7 | import meteordevelopment.meteorclient.utils.entity.DamageUtils; 8 | import net.minecraft.client.MinecraftClient; 9 | import net.minecraft.entity.Entity; 10 | import net.minecraft.entity.LivingEntity; 11 | 12 | public class CriticalsPlus extends Module { 13 | public CriticalsPlus() { 14 | super(Categories.Combat, "Criticals+", "Better criticals module"); 15 | } 16 | 17 | private static MinecraftClient mc = MinecraftClient.getInstance(); 18 | 19 | public static boolean canCrit() { 20 | return !mc.player.isOnGround() && mc.player.fallDistance > 0; 21 | } 22 | 23 | public static boolean skipCrit() { 24 | return !mc.player.isOnGround() || mc.player.isSubmergedInWater() || mc.player.isInLava() || mc.player.isClimbing(); 25 | } 26 | 27 | public static boolean allowCrit() { 28 | if (canCrit()) { 29 | return true; 30 | } 31 | else if (Modules.get().get(Criticals.class).isActive()) { 32 | return !skipCrit(); 33 | } 34 | return false; 35 | } 36 | 37 | public static boolean needCrit(Entity entity) { 38 | if (entity instanceof LivingEntity livingEntity) { 39 | return livingEntity.getHealth() >= DamageUtils.getAttackDamage(mc.player, livingEntity); 40 | } 41 | return false; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/killaura/KillAuraPlusMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat.killaura; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import net.minecraft.client.MinecraftClient; 7 | 8 | public class KillAuraPlusMode { 9 | protected final MinecraftClient mc; 10 | protected final KillAuraPlus settings; 11 | private final KillAuraPlusModes type; 12 | 13 | public KillAuraPlusMode(KillAuraPlusModes type) { 14 | this.settings = Modules.get().get(KillAuraPlus.class); 15 | this.mc = MinecraftClient.getInstance(); 16 | this.type = type; 17 | } 18 | public void onActivate() { } 19 | public void onDeactivate() { } 20 | public void onTickPre(TickEvent.Pre event) { } 21 | public void onTickPost(TickEvent.Post event) { } 22 | 23 | public void onSendPacket(PacketEvent.Send event) { } 24 | 25 | public String getInfoString() { return ""; } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/killaura/KillAuraPlusModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat.killaura; 2 | 3 | public enum KillAuraPlusModes { 4 | None, 5 | Matrix; 6 | 7 | @Override 8 | public String toString() { 9 | return super.toString().replaceAll("Plus", "+").replaceAll("_", " "); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/velocity/VelocityMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat.velocity; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import net.minecraft.client.MinecraftClient; 7 | 8 | public class VelocityMode { 9 | protected final MinecraftClient mc; 10 | protected final VelocityPlus settings; 11 | private final VelocityModes type; 12 | 13 | public VelocityMode(VelocityModes type) { 14 | this.settings = Modules.get().get(VelocityPlus.class);; 15 | this.mc = MinecraftClient.getInstance(); 16 | this.type = type; 17 | } 18 | 19 | public void onSendPacket(PacketEvent.Send event) {} 20 | public void onSentPacket(PacketEvent.Sent event) {} 21 | public void onReceivePacket(PacketEvent.Receive event) {} 22 | 23 | public void onTickEventPre(TickEvent.Pre event) {} 24 | public void onTickEventPost(TickEvent.Post event) {} 25 | 26 | public void onActivate() {} 27 | public void onDeactivate() {} 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/velocity/VelocityModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat.velocity; 2 | 3 | public enum VelocityModes { 4 | Grim_Cancel, 5 | Grim_Cancel_v2, 6 | Grim_Skip; 7 | 8 | @Override 9 | public String toString() { 10 | return super.toString().replace('_', ' '); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/velocity/VelocityPlus.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat.velocity; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.*; 6 | import meteordevelopment.meteorclient.systems.modules.Categories; 7 | import meteordevelopment.meteorclient.systems.modules.Module; 8 | import meteordevelopment.orbit.EventHandler; 9 | import nekiplay.meteorplus.features.modules.combat.velocity.modes.GrimCancel; 10 | import nekiplay.meteorplus.features.modules.combat.velocity.modes.GrimCancel_v2; 11 | import nekiplay.meteorplus.features.modules.combat.velocity.modes.GrimSkip; 12 | 13 | public class VelocityPlus extends Module { 14 | public VelocityPlus() { 15 | super(Categories.Movement, "velocity+", "Bypass velocity."); 16 | } 17 | private final SettingGroup settingsGroup = settings.getDefaultGroup(); 18 | 19 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 20 | 21 | private final Setting mode = sgGeneral.add(new EnumSetting.Builder() 22 | .name("mode") 23 | .description("Velocity mode.") 24 | .defaultValue(VelocityModes.Grim_Cancel) 25 | .onModuleActivated(timerModesSetting -> onTimerModeChanged(timerModesSetting.get())) 26 | .onChanged(this::onTimerModeChanged) 27 | .build() 28 | ); 29 | 30 | 31 | private VelocityMode currentMode; 32 | 33 | private void onTimerModeChanged(VelocityModes mode) { 34 | switch (mode) { 35 | case Grim_Cancel -> currentMode = new GrimCancel(); 36 | case Grim_Cancel_v2 -> currentMode = new GrimCancel_v2(); 37 | case Grim_Skip -> currentMode = new GrimSkip(); 38 | } 39 | } 40 | 41 | @Override 42 | public void onActivate() { 43 | currentMode.onActivate(); 44 | } 45 | 46 | @Override 47 | public void onDeactivate() { 48 | currentMode.onDeactivate(); 49 | } 50 | 51 | @EventHandler 52 | private void onPreTick(TickEvent.Pre event) { 53 | currentMode.onTickEventPre(event); 54 | } 55 | 56 | @EventHandler 57 | private void onPostTick(TickEvent.Post event) { 58 | currentMode.onTickEventPost(event); 59 | } 60 | @EventHandler 61 | public void onSendPacket(PacketEvent.Send event) { 62 | currentMode.onSendPacket(event); 63 | } 64 | @EventHandler 65 | public void onSentPacket(PacketEvent.Sent event) { 66 | currentMode.onSentPacket(event); 67 | } 68 | @EventHandler 69 | private void onRecivePacket(PacketEvent.Receive event) { 70 | currentMode.onReceivePacket(event); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/velocity/modes/GrimCancel.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat.velocity.modes; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.utils.network.MeteorExecutor; 5 | import nekiplay.meteorplus.features.modules.combat.velocity.VelocityMode; 6 | import nekiplay.meteorplus.features.modules.combat.velocity.VelocityModes; 7 | import net.minecraft.network.packet.Packet; 8 | import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket; 9 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 10 | import net.minecraft.network.packet.s2c.play.EntityDamageS2CPacket; 11 | import net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket; 12 | import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket; 13 | 14 | public class GrimCancel extends VelocityMode { 15 | public GrimCancel() { 16 | super(VelocityModes.Grim_Cancel); 17 | } 18 | 19 | private boolean canCancel = false; 20 | 21 | @Override 22 | public void onActivate() { 23 | canCancel = false; 24 | } 25 | 26 | @Override 27 | public void onDeactivate() { 28 | canCancel = false; 29 | } 30 | 31 | @Override 32 | public void onReceivePacket(PacketEvent.Receive event) { 33 | Packet packet = event.packet; 34 | 35 | if (packet instanceof EntityDamageS2CPacket && ((EntityDamageS2CPacket) packet).entityId() == mc.player.getId()) { 36 | canCancel = true; 37 | } 38 | 39 | if (((packet instanceof EntityVelocityUpdateS2CPacket && ((EntityVelocityUpdateS2CPacket) packet).getEntityId() == mc.player.getId()) || packet instanceof ExplosionS2CPacket) && canCancel) { 40 | event.cancel(); 41 | MeteorExecutor.execute(() -> { 42 | try { Thread.sleep(20); } catch (Exception ignore) { } 43 | 44 | mc.getNetworkHandler().sendPacket(new PlayerMoveC2SPacket.Full(mc.player.getX(), mc.player.getY(), mc.player.getZ(), mc.player.getYaw(), mc.player.getPitch(), mc.player.isOnGround(), mc.player.horizontalCollision)); 45 | mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, mc.player.getBlockPos(), mc.player.getHorizontalFacing().getOpposite())); 46 | canCancel = false; 47 | }); 48 | } 49 | 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/velocity/modes/GrimCancel_v2.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat.velocity.modes; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import nekiplay.meteorplus.features.modules.combat.velocity.VelocityMode; 5 | import nekiplay.meteorplus.features.modules.combat.velocity.VelocityModes; 6 | import net.minecraft.network.packet.Packet; 7 | import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket; 8 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 9 | import net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket; 10 | import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket; 11 | import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket; 12 | import net.minecraft.util.math.BlockPos; 13 | import net.minecraft.util.math.Direction; 14 | 15 | public class GrimCancel_v2 extends VelocityMode { 16 | public GrimCancel_v2() { 17 | super(VelocityModes.Grim_Cancel_v2); 18 | } 19 | 20 | private int skip = 0; 21 | 22 | private boolean canCancel = false; 23 | 24 | @Override 25 | public void onActivate() { 26 | canCancel = false; 27 | skip = 0; 28 | } 29 | 30 | @Override 31 | public void onDeactivate() { 32 | canCancel = false; 33 | skip = 0; 34 | } 35 | 36 | @Override 37 | public void onReceivePacket(PacketEvent.Receive event) { 38 | Packet packet = event.packet; 39 | 40 | if (((packet instanceof EntityVelocityUpdateS2CPacket && ((EntityVelocityUpdateS2CPacket) packet).getEntityId() == mc.player.getId()) || packet instanceof ExplosionS2CPacket) && canCancel) { 41 | event.cancel(); 42 | canCancel = true; 43 | } 44 | else if (packet instanceof PlayerPositionLookS2CPacket) { 45 | skip = 3; 46 | } 47 | } 48 | 49 | @Override 50 | public void onSendPacket(PacketEvent.Send event) { 51 | Packet packet = event.packet; 52 | 53 | if (packet instanceof PlayerMoveC2SPacket) { 54 | skip--; 55 | if (canCancel) { 56 | if (skip <= 0) { 57 | mc.getNetworkHandler().sendPacket(new PlayerMoveC2SPacket.Full(mc.player.getX(), mc.player.getY(), mc.player.getZ(), mc.player.getYaw(), mc.player.getPitch(), mc.player.isOnGround(), mc.player.horizontalCollision)); 58 | mc.getNetworkHandler().sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, mc.player.getBlockPos(), Direction.UP)); 59 | } 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/combat/velocity/modes/GrimSkip.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.combat.velocity.modes; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import nekiplay.meteorplus.features.modules.combat.velocity.VelocityMode; 5 | import nekiplay.meteorplus.features.modules.combat.velocity.VelocityModes; 6 | import net.minecraft.network.packet.Packet; 7 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 8 | import net.minecraft.network.packet.s2c.play.EntityDamageS2CPacket; 9 | import net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket; 10 | import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket; 11 | 12 | public class GrimSkip extends VelocityMode { 13 | public GrimSkip() { 14 | super(VelocityModes.Grim_Skip); 15 | } 16 | 17 | private int skip = 0; 18 | 19 | private boolean canCancel = false; 20 | 21 | @Override 22 | public void onActivate() { 23 | canCancel = false; 24 | skip = 0; 25 | } 26 | 27 | @Override 28 | public void onDeactivate() { 29 | canCancel = false; 30 | skip = 0; 31 | } 32 | 33 | @Override 34 | public void onReceivePacket(PacketEvent.Receive event) { 35 | Packet packet = event.packet; 36 | if (packet instanceof EntityDamageS2CPacket && ((EntityDamageS2CPacket) packet).entityId() == mc.player.getId()) { 37 | canCancel = true; 38 | } 39 | if (((packet instanceof EntityVelocityUpdateS2CPacket && ((EntityVelocityUpdateS2CPacket) packet).getEntityId() == mc.player.getId()) || packet instanceof ExplosionS2CPacket) && canCancel) { 40 | skip = 6; 41 | event.cancel(); 42 | } 43 | } 44 | 45 | @Override 46 | public void onSendPacket(PacketEvent.Send event) { 47 | Packet packet = event.packet; 48 | 49 | if (packet instanceof PlayerMoveC2SPacket) { 50 | if (skip > 0) { 51 | skip--; 52 | event.cancel(); 53 | } 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/integrations/MapIntegration.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.integrations; 2 | 3 | import baritone.api.BaritoneAPI; 4 | import baritone.api.IBaritone; 5 | import meteordevelopment.meteorclient.settings.BoolSetting; 6 | import meteordevelopment.meteorclient.settings.Setting; 7 | import meteordevelopment.meteorclient.settings.SettingGroup; 8 | import meteordevelopment.meteorclient.systems.modules.Module; 9 | import nekiplay.meteorplus.MeteorPlusAddon; 10 | import nekiplay.MixinPlugin; 11 | 12 | public class MapIntegration extends Module { 13 | public MapIntegration() { 14 | super(MeteorPlusAddon.CATEGORYMODS, "Mini-map", "Improvements for mods on mini-maps."); 15 | } 16 | 17 | private final SettingGroup baritoneIntegration = settings.createGroup("Baritone"); 18 | 19 | public final Setting baritoneGoto = baritoneIntegration.add(new BoolSetting.Builder() 20 | .name("Baritone support") 21 | .description("Moving in baritone at the selected location.") 22 | .defaultValue(true) 23 | .build() 24 | ); 25 | 26 | public final Setting baritoneElytra = baritoneIntegration.add(new BoolSetting.Builder() 27 | .name("Baritone elytra") 28 | .description("Elytra to location.") 29 | .defaultValue(true) 30 | .visible(() -> { 31 | boolean allow = false; 32 | for (IBaritone baritone : BaritoneAPI.getProvider().getAllBaritones()) { 33 | if (!baritone.getCommandManager().getRegistry().stream().filter((a) -> a.getNames().get(0).equalsIgnoreCase("elytra")).findAny().isEmpty()) { 34 | allow = true; 35 | break; 36 | } 37 | } 38 | if (allow) { 39 | allow = baritoneGoto.get(); 40 | } 41 | return allow; 42 | }) 43 | .build() 44 | ); 45 | 46 | private final SettingGroup fullMap = settings.createGroup("Full map"); 47 | 48 | public final Setting showBlock = fullMap.add(new BoolSetting.Builder() 49 | .name("Show block") 50 | .description("Shows the name of the block in the clicked position.") 51 | .visible(() -> MixinPlugin.isXaeroWorldMapresent) 52 | .defaultValue(true) 53 | .build() 54 | ); 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/integrations/WhereIsIt.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.integrations; 2 | 3 | import meteordevelopment.meteorclient.settings.*; 4 | import meteordevelopment.meteorclient.systems.modules.Module; 5 | import meteordevelopment.meteorclient.utils.render.color.SettingColor; 6 | import nekiplay.meteorplus.MeteorPlusAddon; 7 | 8 | public class WhereIsIt extends Module { 9 | public WhereIsIt() { 10 | super(MeteorPlusAddon.CATEGORYMODS, "where-is-it", "ChestTracker modification."); 11 | } 12 | 13 | public SettingGroup defaultGroup = settings.getDefaultGroup(); 14 | 15 | public final Setting background = defaultGroup.add(new BoolSetting.Builder() 16 | .name("draw-background") 17 | .defaultValue(true) 18 | .build() 19 | ); 20 | 21 | public final Setting suport_color_symbols = defaultGroup.add(new BoolSetting.Builder() 22 | .name("use-color-symbols") 23 | .defaultValue(true) 24 | .build() 25 | ); 26 | 27 | public final Setting text_color = defaultGroup.add(new ColorSetting.Builder() 28 | .name("text-color") 29 | .visible(() -> !suport_color_symbols.get()) 30 | .build() 31 | ); 32 | 33 | public final Setting y_offset = defaultGroup.add(new DoubleSetting.Builder() 34 | .name("y-offset") 35 | .description("change-y-offset.") 36 | .defaultValue(-1) 37 | .max(15) 38 | .min(-15) 39 | .sliderRange(-15, 15) 40 | .build() 41 | ); 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/misc/ChatGPT.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.misc; 2 | 3 | import meteordevelopment.meteorclient.settings.EnumSetting; 4 | import meteordevelopment.meteorclient.settings.Setting; 5 | import meteordevelopment.meteorclient.settings.SettingGroup; 6 | import meteordevelopment.meteorclient.settings.StringSetting; 7 | import meteordevelopment.meteorclient.systems.modules.Categories; 8 | import meteordevelopment.meteorclient.systems.modules.Module; 9 | import nekiplay.meteorplus.MeteorPlusAddon; 10 | 11 | public class ChatGPT extends Module { 12 | public ChatGPT() { 13 | super(Categories.Misc, "Chat GPT", "Use chat gpt in minecraft"); 14 | } 15 | 16 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 17 | 18 | public enum Service { 19 | NovaAI, 20 | NagaAI, 21 | Custom; 22 | 23 | @Override 24 | public String toString() { 25 | return super.toString().replace('_', ' '); 26 | } 27 | } 28 | 29 | public final Setting service = sgGeneral.add(new EnumSetting.Builder() 30 | .name("Service") 31 | .description("Service to access chat gpt.") 32 | .defaultValue(Service.NagaAI) 33 | .build() 34 | ); 35 | 36 | public final Setting token_novaai = sgGeneral.add(new StringSetting.Builder() 37 | .name("NovaAI-token") 38 | .description("Token-from-NovaAI.") 39 | .defaultValue("") 40 | .visible(() -> service.get() == Service.NovaAI) 41 | .build() 42 | ); 43 | 44 | public final Setting token_nagaai = sgGeneral.add(new StringSetting.Builder() 45 | .name("NagaAI-token") 46 | .description("Token-from-NagaAI.") 47 | .defaultValue("") 48 | .visible(() -> service.get() == Service.NagaAI) 49 | .build() 50 | ); 51 | 52 | public final Setting custom_endpoint = sgGeneral.add(new StringSetting.Builder() 53 | .name("Custom-Endpoint") 54 | .description("Custom-Endpoint.") 55 | .defaultValue("") 56 | .visible(() -> service.get() == Service.Custom) 57 | .build() 58 | ); 59 | 60 | public final Setting token_custom = sgGeneral.add(new StringSetting.Builder() 61 | .name("Custom-token") 62 | .description("Token-from-Custom-Endpoint.") 63 | .defaultValue("") 64 | .visible(() -> service.get() == Service.Custom) 65 | .build() 66 | ); 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/misc/ChatPrefix.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.misc; 2 | 3 | import meteordevelopment.meteorclient.settings.ColorSetting; 4 | import meteordevelopment.meteorclient.settings.Setting; 5 | import meteordevelopment.meteorclient.settings.SettingGroup; 6 | import meteordevelopment.meteorclient.settings.StringSetting; 7 | import meteordevelopment.meteorclient.systems.modules.Categories; 8 | import meteordevelopment.meteorclient.systems.modules.Module; 9 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 10 | import meteordevelopment.meteorclient.utils.render.color.SettingColor; 11 | import nekiplay.meteorplus.MeteorPlusAddon; 12 | import net.minecraft.text.MutableText; 13 | import net.minecraft.text.Text; 14 | import net.minecraft.text.TextColor; 15 | import net.minecraft.util.Formatting; 16 | 17 | public class ChatPrefix extends Module { 18 | public ChatPrefix() { 19 | super(Categories.Misc, "meteor+-chat-prefix", "prefix for enabling and disabling Meteor+ modules."); 20 | } 21 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 22 | private final Setting prefix = sgGeneral.add(new StringSetting.Builder() 23 | .name("prefix") 24 | .description("Which prefix to be displayed for Meteor+ modules.") 25 | .defaultValue("Meteor+") 26 | .onChanged(reload -> setPrefixes()) 27 | .build() 28 | ); 29 | 30 | private final Setting prefixColor = sgGeneral.add(new ColorSetting.Builder() 31 | .name("color") 32 | .description("Which color to use for the prefix.") 33 | .defaultValue(new SettingColor(0, 220, 4, 255)) 34 | .build() 35 | ); 36 | 37 | @Override 38 | public void onActivate() { 39 | setPrefixes(); 40 | } 41 | 42 | @Override 43 | public void onDeactivate() { 44 | ChatUtils.unregisterCustomPrefix("nekiplay.meteorplus.features.modules"); 45 | } 46 | 47 | public void setPrefixes() { 48 | if (isActive()) { 49 | ChatUtils.registerCustomPrefix("nekiplay.meteorplus.features.modules", this::getPrefix); 50 | } 51 | } 52 | 53 | public Text getPrefix() { 54 | MutableText value = Text.literal(prefix.get()); 55 | MutableText prefix = Text.literal(""); 56 | value.setStyle(value.getStyle().withColor(TextColor.fromRgb(prefixColor.get().getPacked()))); 57 | prefix.setStyle(prefix.getStyle().withFormatting(Formatting.GRAY)) 58 | .append(Text.literal("[")) 59 | .append(value) 60 | .append(Text.literal("] ")); 61 | return prefix; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/NoJumpDelay.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement; 2 | 3 | import meteordevelopment.meteorclient.systems.modules.Categories; 4 | import meteordevelopment.meteorclient.systems.modules.Module; 5 | import nekiplay.meteorplus.MeteorPlusAddon; 6 | 7 | public class NoJumpDelay extends Module { 8 | public NoJumpDelay() { 9 | super(Categories.Movement, "no-jump-delay", "Remove jump delay."); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/elytrafly/ElytraFlyMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.elytrafly; 2 | 3 | import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent; 4 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import net.minecraft.client.MinecraftClient; 7 | import net.minecraft.util.math.Vec3d; 8 | 9 | public class ElytraFlyMode { 10 | protected final MinecraftClient mc; 11 | protected final ElytraFlyPlus elytraFly; 12 | private final ElytraFlyModes type; 13 | 14 | protected boolean lastJumpPressed; 15 | protected boolean incrementJumpTimer; 16 | protected boolean lastForwardPressed; 17 | protected int jumpTimer; 18 | protected double velX, velY, velZ; 19 | protected double ticksLeft; 20 | protected Vec3d forward, right; 21 | protected double acceleration; 22 | 23 | public ElytraFlyMode(ElytraFlyModes type) { 24 | this.elytraFly = Modules.get().get(ElytraFlyPlus.class); 25 | this.mc = MinecraftClient.getInstance(); 26 | this.type = type; 27 | } 28 | 29 | public void onTick() { 30 | 31 | } 32 | 33 | public void onPreTick() { 34 | } 35 | 36 | public void onPacketSend(PacketEvent.Send event) { 37 | } 38 | 39 | public void onPacketReceive(PacketEvent.Receive event) { 40 | } 41 | 42 | public void onPlayerMove(PlayerMoveEvent event) { 43 | } 44 | 45 | public void onActivate() { 46 | lastJumpPressed = false; 47 | jumpTimer = 0; 48 | ticksLeft = 0; 49 | acceleration = 0; 50 | } 51 | 52 | public void onDeactivate() { 53 | } 54 | 55 | 56 | 57 | 58 | public String getHudString() { 59 | return type.name(); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/elytrafly/ElytraFlyModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.elytrafly; 2 | 3 | public enum ElytraFlyModes { 4 | Control, 5 | Wasp 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/elytrafly/modes/Wasp.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.elytrafly.modes; 2 | 3 | import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent; 4 | import meteordevelopment.meteorclient.mixininterface.IVec3d; 5 | import nekiplay.meteorplus.features.modules.movement.elytrafly.ElytraFlyMode; 6 | import nekiplay.meteorplus.features.modules.movement.elytrafly.ElytraFlyModes; 7 | 8 | public class Wasp extends ElytraFlyMode { 9 | public Wasp() { 10 | super(ElytraFlyModes.Wasp); 11 | } 12 | 13 | private boolean moving; 14 | private float yaw; 15 | private float pitch; 16 | 17 | @Override 18 | public void onPlayerMove(PlayerMoveEvent event) { 19 | if (!mc.player.isGliding()) {return;} 20 | 21 | updateWaspMovement(); 22 | pitch = mc.player.getPitch(); 23 | 24 | double cos = Math.cos(Math.toRadians(yaw + 90)); 25 | double sin = Math.sin(Math.toRadians(yaw + 90)); 26 | 27 | double x = moving ? cos * elytraFly.horizontal_wasp.get() : 0; 28 | double y = -elytraFly.fallSpeed_wasp.get(); 29 | double z = moving ? sin * elytraFly.horizontal_wasp.get() : 0; 30 | 31 | if (elytraFly.smartFall_wasp.get()) { 32 | y *= Math.abs(Math.sin(Math.toRadians(pitch))); 33 | } 34 | 35 | if (mc.options.sneakKey.isPressed() && !mc.options.jumpKey.isPressed()) { 36 | y = -elytraFly.down_wasp.get(); 37 | } 38 | if (!mc.options.sneakKey.isPressed() && mc.options.jumpKey.isPressed()) { 39 | y = elytraFly.up_wasp.get(); 40 | } 41 | 42 | ((IVec3d) event.movement).meteor$set(x, y, z); 43 | 44 | if (elytraFly.resetSpeed.get()) { 45 | mc.player.setVelocity(0, 0, 0); 46 | } 47 | } 48 | 49 | private void updateWaspMovement() { 50 | float yaw = mc.player.getYaw(); 51 | 52 | float forward = mc.player.input.getMovementInput().y; 53 | float sideways = mc.player.input.getMovementInput().x; 54 | 55 | if (forward > 0) { 56 | moving = true; 57 | yaw += sideways > 0 ? -45 : sideways < 0 ? 45 : 0; 58 | } else if (forward < 0) { 59 | moving = true; 60 | yaw += sideways > 0 ? -135 : sideways < 0 ? 135 : 180; 61 | } else { 62 | moving = sideways != 0; 63 | yaw += sideways > 0 ? -90 : sideways < 0 ? 90 : 0; 64 | } 65 | 66 | this.yaw = yaw; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/fastladder/FastLadderMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.fastladder; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import net.minecraft.client.MinecraftClient; 7 | 8 | public class FastLadderMode { 9 | protected final MinecraftClient mc; 10 | protected final FastLadderPlus settings; 11 | private final FastLadderModes type; 12 | 13 | public FastLadderMode(FastLadderModes type) { 14 | this.settings = Modules.get().get(FastLadderPlus.class); 15 | this.mc = MinecraftClient.getInstance(); 16 | this.type = type; 17 | } 18 | 19 | public void onSendPacket(PacketEvent.Send event) {} 20 | public void onSentPacket(PacketEvent.Sent event) {} 21 | 22 | public void onTickEventPre(TickEvent.Pre event) {} 23 | public void onTickEventPost(TickEvent.Post event) {} 24 | 25 | public void onActivate() {} 26 | public void onDeactivate() {} 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/fastladder/FastLadderModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.fastladder; 2 | 3 | public enum FastLadderModes { 4 | Spartan; 5 | 6 | @Override 7 | public String toString() { 8 | return super.toString().replace('_', ' '); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/fastladder/FastLadderPlus.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.fastladder; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.EnumSetting; 6 | import meteordevelopment.meteorclient.settings.Setting; 7 | import meteordevelopment.meteorclient.settings.SettingGroup; 8 | import meteordevelopment.meteorclient.systems.modules.Categories; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.orbit.EventHandler; 11 | import nekiplay.meteorplus.features.modules.movement.fastladder.modes.Spartan; 12 | 13 | public class FastLadderPlus extends Module { 14 | public FastLadderPlus() { 15 | super(Categories.Movement, "fast-climb+", "Bypass fast-climb"); 16 | onSpiderModeChanged(spiderMode.get()); 17 | } 18 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 19 | 20 | public final Setting spiderMode = sgGeneral.add(new EnumSetting.Builder() 21 | .name("mode") 22 | .description("The method of applying spider.") 23 | .defaultValue(FastLadderModes.Spartan) 24 | .onModuleActivated(spiderModesSetting -> onSpiderModeChanged(spiderModesSetting.get())) 25 | .onChanged(this::onSpiderModeChanged) 26 | .build() 27 | ); 28 | 29 | private FastLadderMode currentMode; 30 | 31 | @Override 32 | public void onActivate() { 33 | currentMode.onActivate(); 34 | } 35 | 36 | @Override 37 | public void onDeactivate() { 38 | currentMode.onDeactivate(); 39 | } 40 | 41 | @EventHandler 42 | private void onPreTick(TickEvent.Pre event) { 43 | currentMode.onTickEventPre(event); 44 | } 45 | 46 | @EventHandler 47 | private void onPostTick(TickEvent.Post event) { 48 | currentMode.onTickEventPost(event); 49 | } 50 | @EventHandler 51 | public void onSendPacket(PacketEvent.Send event) { 52 | currentMode.onSendPacket(event); 53 | } 54 | @EventHandler 55 | public void onSentPacket(PacketEvent.Sent event) { 56 | currentMode.onSentPacket(event); 57 | } 58 | 59 | 60 | private void onSpiderModeChanged(FastLadderModes mode) { 61 | switch (mode) { 62 | case Spartan -> currentMode = new Spartan(); 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/fly/FlyMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.fly; 2 | 3 | import meteordevelopment.meteorclient.events.entity.player.CanWalkOnFluidEvent; 4 | import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent; 5 | import meteordevelopment.meteorclient.events.entity.player.SendMovementPacketsEvent; 6 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 7 | import meteordevelopment.meteorclient.events.world.CollisionShapeEvent; 8 | import meteordevelopment.meteorclient.events.world.TickEvent; 9 | import meteordevelopment.meteorclient.systems.modules.Modules; 10 | import net.minecraft.client.MinecraftClient; 11 | 12 | public class FlyMode { 13 | protected final MinecraftClient mc; 14 | protected final FlyPlus settings; 15 | private final FlyModes type; 16 | 17 | public FlyMode(FlyModes type) { 18 | this.settings = Modules.get().get(FlyPlus.class); 19 | this.mc = MinecraftClient.getInstance(); 20 | this.type = type; 21 | } 22 | 23 | public void onSendPacket(PacketEvent.Send event) {} 24 | public void onSentPacket(PacketEvent.Sent event) {} 25 | public void onRecivePacket(PacketEvent.Receive event) {} 26 | public void onPlayerMoveEvent(PlayerMoveEvent event) {} 27 | public void onPlayerMoveSendPre(SendMovementPacketsEvent.Pre event) {} 28 | 29 | public void onCanWalkOnFluid(CanWalkOnFluidEvent event) {} 30 | public void onCollisionShape(CollisionShapeEvent event) {} 31 | 32 | public void onTickEventPre(TickEvent.Pre event) {} 33 | public void onTickEventPost(TickEvent.Post event) {} 34 | 35 | public void onActivate() {} 36 | public void onDeactivate() {} 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/fly/FlyModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.fly; 2 | 3 | public enum FlyModes { 4 | Vulcan_Clip, 5 | Matrix_Exploit_2, 6 | Matrix_Exploit; 7 | 8 | @Override 9 | public String toString() { 10 | String name = name(); 11 | return name.replace('_', ' '); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/jesus/JesusMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.jesus; 2 | 3 | import meteordevelopment.meteorclient.events.entity.player.CanWalkOnFluidEvent; 4 | import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent; 5 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 6 | import meteordevelopment.meteorclient.events.world.CollisionShapeEvent; 7 | import meteordevelopment.meteorclient.events.world.TickEvent; 8 | import meteordevelopment.meteorclient.systems.modules.Modules; 9 | import net.minecraft.client.MinecraftClient; 10 | 11 | public class JesusMode { 12 | protected final MinecraftClient mc; 13 | protected final JesusPlus settings; 14 | private final JesusModes type; 15 | 16 | public JesusMode(JesusModes type) { 17 | this.settings = Modules.get().get(JesusPlus.class); 18 | this.mc = MinecraftClient.getInstance(); 19 | this.type = type; 20 | } 21 | 22 | public void onSendPacket(PacketEvent.Send event) {} 23 | public void onSentPacket(PacketEvent.Sent event) {} 24 | public void onPlayerMoveEvent(PlayerMoveEvent event) {} 25 | 26 | public void onCanWalkOnFluid(CanWalkOnFluidEvent event) {} 27 | public void onCollisionShape(CollisionShapeEvent event) {} 28 | 29 | public void onTickEventPre(TickEvent.Pre event) {} 30 | public void onTickEventPost(TickEvent.Post event) {} 31 | 32 | public void onActivate() {} 33 | public void onDeactivate() {} 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/jesus/JesusModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.jesus; 2 | 3 | public enum JesusModes { 4 | NCP, 5 | Matrix_Zoom, 6 | Matrix_Zoom_2, 7 | Vulcan_Exploit; 8 | 9 | @Override 10 | public String toString() { 11 | return super.toString().replace('_', ' '); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/jesus/modes/MatrixZoom.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.jesus.modes; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.mixininterface.IVec3d; 5 | import net.minecraft.block.Blocks; 6 | import net.minecraft.util.math.BlockPos; 7 | import net.minecraft.util.math.Vec3d; 8 | import nekiplay.meteorplus.features.modules.movement.jesus.JesusMode; 9 | import nekiplay.meteorplus.features.modules.movement.jesus.JesusModes; 10 | 11 | public class MatrixZoom extends JesusMode { 12 | public MatrixZoom() { 13 | super(JesusModes.Matrix_Zoom); 14 | } 15 | 16 | private final float range = 0.005f; 17 | 18 | @Override 19 | public void onTickEventPre(TickEvent.Pre event) { 20 | float yaw = mc.player.getYaw(); 21 | Vec3d forward = Vec3d.fromPolar(0, yaw); 22 | Vec3d right = Vec3d.fromPolar(0, yaw + 90); 23 | 24 | double velX = 0; 25 | double velZ = 0; 26 | double s = 0.5; 27 | double speedValue = settings.speed.get(); 28 | 29 | if (mc.options.forwardKey.isPressed()) { 30 | velX += forward.x * s * speedValue; 31 | velZ += forward.z * s * speedValue; 32 | } 33 | if (mc.options.backKey.isPressed()) { 34 | velX -= forward.x * s * speedValue; 35 | velZ -= forward.z * s * speedValue; 36 | } 37 | 38 | if (mc.options.rightKey.isPressed()) { 39 | velX += right.x * s * speedValue; 40 | velZ += right.z * s * speedValue; 41 | } 42 | if (mc.options.leftKey.isPressed()) { 43 | velX -= right.x * s * speedValue; 44 | velZ -= right.z * s * speedValue; 45 | } 46 | if (mc.world.getBlockState(new BlockPos(mc.player.getBlockX(), (int) (mc.player.getBlockY() + range), mc.player.getBlockZ())).getBlock() == Blocks.WATER && !mc.player.horizontalCollision) { 47 | ((IVec3d) mc.player.getVelocity()).meteor$set(velX, 0, velZ); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/jesus/modes/MatrixZoom2.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.jesus.modes; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.mixininterface.IVec3d; 5 | import net.minecraft.block.Blocks; 6 | import net.minecraft.util.math.BlockPos; 7 | import net.minecraft.util.math.Vec3d; 8 | import nekiplay.meteorplus.features.modules.movement.jesus.JesusMode; 9 | import nekiplay.meteorplus.features.modules.movement.jesus.JesusModes; 10 | 11 | public class MatrixZoom2 extends JesusMode { 12 | public MatrixZoom2() { 13 | super(JesusModes.Matrix_Zoom_2); 14 | } 15 | 16 | private final float range = 0.005f; 17 | private int tick = 0; 18 | 19 | @Override 20 | public void onTickEventPre(TickEvent.Pre event) { 21 | float yaw = mc.player.getYaw(); 22 | Vec3d forward = Vec3d.fromPolar(0, yaw); 23 | Vec3d right = Vec3d.fromPolar(0, yaw + 90); 24 | 25 | double velX = 0; 26 | double velZ = 0; 27 | double s = 0.5; 28 | double speedValue = settings.speed.get(); 29 | 30 | if (mc.options.forwardKey.isPressed()) { 31 | velX += forward.x * s * speedValue; 32 | velZ += forward.z * s * speedValue; 33 | } 34 | if (mc.options.backKey.isPressed()) { 35 | velX -= forward.x * s * speedValue; 36 | velZ -= forward.z * s * speedValue; 37 | } 38 | 39 | if (mc.options.rightKey.isPressed()) { 40 | velX += right.x * s * speedValue; 41 | velZ += right.z * s * speedValue; 42 | } 43 | if (mc.options.leftKey.isPressed()) { 44 | velX -= right.x * s * speedValue; 45 | velZ -= right.z * s * speedValue; 46 | } 47 | if (mc.world.getBlockState(new BlockPos((int) mc.player.getPos().x, (int) (mc.player.getPos().y + range), (int) mc.player.getPos().z)).getBlock() == Blocks.WATER && !mc.player.horizontalCollision) { 48 | if (tick == 0) { 49 | ((IVec3d) mc.player.getVelocity()).meteor$set(velX, 0.030091, velZ); 50 | } 51 | else if (tick == 1) { 52 | ((IVec3d) mc.player.getVelocity()).meteor$set(velX, -0.030091, velZ); 53 | } 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/nofall/NoFallMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.nofall; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import net.minecraft.client.MinecraftClient; 7 | 8 | public class NoFallMode { 9 | protected final MinecraftClient mc; 10 | protected final NoFallPlus settings; 11 | private final NoFallModes type; 12 | 13 | public NoFallMode(NoFallModes type) { 14 | this.settings = Modules.get().get(NoFallPlus.class); 15 | this.mc = MinecraftClient.getInstance(); 16 | this.type = type; 17 | } 18 | 19 | public void onSendPacket(PacketEvent.Send event) {} 20 | public void onSentPacket(PacketEvent.Sent event) {} 21 | public void onReceivePacket(PacketEvent.Receive event) {} 22 | 23 | public void onTickEventPre(TickEvent.Pre event) {} 24 | public void onTickEventPost(TickEvent.Post event) {} 25 | 26 | public void onActivate() {} 27 | public void onDeactivate() {} 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/nofall/NoFallModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.nofall; 2 | 3 | public enum NoFallModes { 4 | Matrix_New, 5 | Vulcan, 6 | Vulcan_2dot7dot7, 7 | Verus, 8 | Elytra_Clip, 9 | Elytra_Fly, 10 | No_Ground, 11 | No_Ground_Elytra; 12 | @Override 13 | public String toString() { 14 | return super.toString().replace('_', ' ').replaceAll("dot", "."); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/nofall/NoFallPlus.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.nofall; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.EnumSetting; 6 | import meteordevelopment.meteorclient.settings.Setting; 7 | import meteordevelopment.meteorclient.settings.SettingGroup; 8 | import meteordevelopment.meteorclient.systems.modules.Categories; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.orbit.EventHandler; 11 | import nekiplay.meteorplus.features.modules.movement.nofall.modes.*; 12 | 13 | public class NoFallPlus extends Module { 14 | public NoFallPlus() { 15 | super(Categories.Movement, "no-fall+", "Bypass fall damage or reduce fall damage"); 16 | onModeChanged(mode.get()); 17 | } 18 | 19 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 20 | private NoFallMode currentMode; 21 | 22 | public final Setting mode = sgGeneral.add(new EnumSetting.Builder() 23 | .name("mode") 24 | .description("The method of applying nofall.") 25 | .defaultValue(NoFallModes.Elytra_Clip) 26 | .onModuleActivated(spiderModesSetting -> onModeChanged(spiderModesSetting.get())) 27 | .onChanged(this::onModeChanged) 28 | .build() 29 | ); 30 | 31 | @Override 32 | public void onActivate() { 33 | currentMode.onActivate(); 34 | } 35 | 36 | @Override 37 | public void onDeactivate() { 38 | currentMode.onDeactivate(); 39 | } 40 | 41 | @EventHandler 42 | private void onPreTick(TickEvent.Pre event) { 43 | currentMode.onTickEventPre(event); 44 | } 45 | 46 | @EventHandler 47 | private void onPostTick(TickEvent.Post event) { 48 | currentMode.onTickEventPost(event); 49 | } 50 | @EventHandler 51 | public void onSendPacket(PacketEvent.Send event) { 52 | currentMode.onSendPacket(event); 53 | } 54 | @EventHandler 55 | public void onSentPacket(PacketEvent.Sent event) { 56 | currentMode.onSentPacket(event); 57 | } 58 | 59 | 60 | private void onModeChanged(NoFallModes mode) { 61 | switch (mode) { 62 | case No_Ground_Elytra -> currentMode = new No_Ground_Elytra(); 63 | case No_Ground -> currentMode = new No_Ground(); 64 | case Elytra_Fly -> currentMode = new ElytraFly(); 65 | case Elytra_Clip -> currentMode = new Eclip(); 66 | case Matrix_New -> currentMode = new MatrixNew(); 67 | case Verus -> currentMode = new Verus(); 68 | case Vulcan -> currentMode = new Vulcan(); 69 | case Vulcan_2dot7dot7 -> currentMode = new Vulcan277(); 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/nofall/modes/ElytraFly.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.nofall.modes; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 5 | import meteordevelopment.meteorclient.utils.player.InvUtils; 6 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallModes; 7 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallMode; 8 | import net.minecraft.entity.EquipmentSlot; 9 | import net.minecraft.item.Items; 10 | import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket; 11 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 12 | import net.minecraft.util.hit.BlockHitResult; 13 | import net.minecraft.util.hit.HitResult; 14 | import net.minecraft.util.math.BlockPos; 15 | import net.minecraft.util.math.Vec3d; 16 | import net.minecraft.world.RaycastContext; 17 | 18 | public class ElytraFly extends NoFallMode { 19 | public ElytraFly() { 20 | super(NoFallModes.Elytra_Fly); 21 | } 22 | 23 | @Override 24 | public void onTickEventPre(TickEvent.Pre event) { 25 | 26 | if (mc.player.fallDistance > 2) { 27 | FindItemResult elytra = InvUtils.find(Items.ELYTRA); 28 | if (elytra.found()) { 29 | int slot = elytra.slot(); 30 | if (mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { 31 | InvUtils.move().from(slot).toArmor(2); 32 | } 33 | } 34 | 35 | if (mc.player.fallDistance > 2.7) { 36 | mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_FALL_FLYING)); 37 | mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(true, mc.player.horizontalCollision)); 38 | Vec3d vel = mc.player.getVelocity(); 39 | mc.player.setVelocity(vel.x, 0, vel.z); 40 | mc.player.fallDistance = 0.0f; 41 | mc.player.setOnGround(true); 42 | } 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/nofall/modes/MatrixNew.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.nofall.modes; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.mixin.PlayerMoveC2SPacketAccessor; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import meteordevelopment.meteorclient.systems.modules.world.Timer; 7 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallModes; 8 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallMode; 9 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 10 | import net.minecraft.util.shape.VoxelShape; 11 | 12 | import java.util.Iterator; 13 | 14 | public class MatrixNew extends NoFallMode { 15 | public MatrixNew() { 16 | super(NoFallModes.Matrix_New); 17 | } 18 | private Timer timer; 19 | 20 | @Override 21 | public void onDeactivate() { 22 | timer = Modules.get().get(Timer.class); 23 | timer.setOverride(Timer.OFF); 24 | } 25 | 26 | @Override 27 | public void onSendPacket(PacketEvent.Send event) { 28 | if (event.packet instanceof PlayerMoveC2SPacket) { 29 | PlayerMoveC2SPacket packet = (PlayerMoveC2SPacket)event.packet; 30 | PlayerMoveC2SPacketAccessor accessor = (PlayerMoveC2SPacketAccessor)packet; 31 | timer = Modules.get().get(Timer.class); 32 | 33 | if (!mc.player.isOnGround()) { 34 | if (mc.player.fallDistance > 2.69) { 35 | timer.setOverride(0.3); 36 | accessor.setOnGround(true); 37 | mc.player.fallDistance = 0; 38 | } 39 | if (mc.player.fallDistance > 3.5) { 40 | timer.setOverride(0.3); 41 | } 42 | else { 43 | timer.setOverride(Timer.OFF); 44 | } 45 | } 46 | Iterator voxelShapeIterator = mc.world.getCollisions(mc.player, mc.player.getBoundingBox().offset(0.0, mc.player.getVelocity().y, 0.0)).iterator(); 47 | boolean isEmpty = true; 48 | while (voxelShapeIterator.hasNext()) { 49 | VoxelShape shape = voxelShapeIterator.next(); 50 | isEmpty = shape.isEmpty(); 51 | } 52 | if (!isEmpty) { 53 | if (!((PlayerMoveC2SPacket) event.packet).isOnGround() && mc.player.getVelocity().y < -0.6) { 54 | accessor.setOnGround(true); 55 | } 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/nofall/modes/No_Ground.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.nofall.modes; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.mixininterface.IPlayerMoveC2SPacket; 5 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallMode; 6 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallModes; 7 | import nekiplay.meteorplus.mixin.minecraft.entity.PlayerMoveC2SPacketAccessor; 8 | 9 | public class No_Ground extends NoFallMode { 10 | /* 11 | Tested on: oldfrog.org (NCP) 12 | */ 13 | public No_Ground() { 14 | super(NoFallModes.No_Ground); 15 | } 16 | 17 | @Override 18 | public void onSendPacket(PacketEvent.Send event) { 19 | if (event.packet instanceof IPlayerMoveC2SPacket move) { 20 | PlayerMoveC2SPacketAccessor move2 = (PlayerMoveC2SPacketAccessor) move; 21 | if (move2.getOnGround()) { 22 | move2.setOnGround(false); 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/nofall/modes/No_Ground_Elytra.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.nofall.modes; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.mixininterface.IPlayerMoveC2SPacket; 6 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 7 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 8 | import meteordevelopment.meteorclient.utils.player.InvUtils; 9 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallMode; 10 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallModes; 11 | import nekiplay.meteorplus.mixin.minecraft.entity.PlayerMoveC2SPacketAccessor; 12 | import net.minecraft.entity.EquipmentSlot; 13 | import net.minecraft.item.Items; 14 | import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket; 15 | 16 | public class No_Ground_Elytra extends NoFallMode { 17 | /* 18 | Tested on: oldfrog.org (NCP) 19 | */ 20 | public No_Ground_Elytra() { 21 | super(NoFallModes.No_Ground_Elytra); 22 | } 23 | 24 | 25 | @Override 26 | public void onActivate() { 27 | FindItemResult elytra = InvUtils.find(Items.ELYTRA); 28 | if (!elytra.found()) { 29 | ChatUtils.error("Elytra not found, this bypass for working need elytra"); 30 | } 31 | } 32 | 33 | @Override 34 | public void onTickEventPre(TickEvent.Pre event) { 35 | 36 | if (mc.player.fallDistance > 2) { 37 | FindItemResult elytra = InvUtils.find(Items.ELYTRA); 38 | if (elytra.found()) { 39 | int slot = elytra.slot(); 40 | if (mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { 41 | InvUtils.move().from(slot).toArmor(2); 42 | } 43 | } 44 | } 45 | } 46 | 47 | @Override 48 | public void onSendPacket(PacketEvent.Send event) { 49 | if (event.packet instanceof IPlayerMoveC2SPacket move) { 50 | PlayerMoveC2SPacketAccessor move2 = (PlayerMoveC2SPacketAccessor) move; 51 | if (move2.getOnGround()) { 52 | mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_FALL_FLYING)); 53 | move2.setOnGround(false); 54 | } 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/nofall/modes/Verus.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.nofall.modes; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.mixin.PlayerMoveC2SPacketAccessor; 5 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallMode; 6 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallModes; 7 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 8 | 9 | public class Verus extends NoFallMode { 10 | 11 | public Verus() { 12 | super(NoFallModes.Verus); 13 | } 14 | 15 | @Override 16 | public void onSendPacket(PacketEvent.Send event) { 17 | if (event.packet instanceof PlayerMoveC2SPacket) { 18 | PlayerMoveC2SPacket packet = (PlayerMoveC2SPacket)event.packet; 19 | PlayerMoveC2SPacketAccessor accessor = (PlayerMoveC2SPacketAccessor)packet; 20 | 21 | if (mc.player.fallDistance > 3.35) { 22 | accessor.setOnGround(true); 23 | mc.player.fallDistance = 0f; 24 | var vel = mc.player.getVelocity(); 25 | mc.player.setVelocity(vel.x, 0, vel.z); 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/nofall/modes/Vulcan.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.nofall.modes; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.mixin.PlayerMoveC2SPacketAccessor; 6 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallModes; 7 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallMode; 8 | import nekiplay.meteorplus.utils.MovementUtils; 9 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 10 | 11 | public class Vulcan extends NoFallMode { 12 | public Vulcan() { 13 | super(NoFallModes.Vulcan); 14 | } 15 | 16 | private boolean vulCanNoFall = false; 17 | private boolean vulCantNoFall = false; 18 | private boolean nextSpoof = false; 19 | private boolean doSpoof = false; 20 | 21 | @Override 22 | public void onActivate() { 23 | vulCanNoFall = false; 24 | vulCantNoFall = false; 25 | nextSpoof = false; 26 | doSpoof = false; 27 | } 28 | 29 | @Override 30 | public void onTickEventPre(TickEvent.Pre event) { 31 | if(!vulCanNoFall && mc.player.fallDistance > 3.25) { 32 | vulCanNoFall = true; 33 | } 34 | if(vulCanNoFall && mc.player.isOnGround() && vulCantNoFall) { 35 | vulCantNoFall = false; 36 | } 37 | if(vulCantNoFall) return; 38 | if(nextSpoof) { 39 | mc.player.getVelocity().add(0, -0.1, 0); 40 | mc.player.fallDistance = -0.1f; 41 | MovementUtils.strafe(0.3f); 42 | nextSpoof = false; 43 | } 44 | if(mc.player.fallDistance > 3.5625f) { 45 | mc.player.fallDistance = 0.0f; 46 | doSpoof = true; 47 | nextSpoof = true; 48 | } 49 | } 50 | 51 | @Override 52 | public void onSendPacket(PacketEvent.Send event) { 53 | if (event.packet instanceof PlayerMoveC2SPacket) { 54 | PlayerMoveC2SPacket packet = (PlayerMoveC2SPacket) event.packet; 55 | PlayerMoveC2SPacketAccessor accessor = (PlayerMoveC2SPacketAccessor) packet; 56 | 57 | 58 | accessor.setOnGround(true); 59 | doSpoof = false; 60 | accessor.setY((double) Math.round(mc.player.getPos().y * 2) / 2); 61 | mc.player.setPosition(mc.player.getPos().x, ((PlayerMoveC2SPacket) event.packet).getY(mc.player.getPos().y), mc.player.getPos().z); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/nofall/modes/Vulcan277.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.nofall.modes; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.mixin.PlayerMoveC2SPacketAccessor; 5 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallModes; 6 | import nekiplay.meteorplus.features.modules.movement.nofall.NoFallMode; 7 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 8 | 9 | public class Vulcan277 extends NoFallMode { 10 | 11 | public Vulcan277() { 12 | super(NoFallModes.Vulcan_2dot7dot7); 13 | } 14 | 15 | @Override 16 | public void onSendPacket(PacketEvent.Send event) { 17 | if (event.packet instanceof PlayerMoveC2SPacket) { 18 | PlayerMoveC2SPacket packet = (PlayerMoveC2SPacket)event.packet; 19 | PlayerMoveC2SPacketAccessor accessor = (PlayerMoveC2SPacketAccessor)packet; 20 | 21 | if (mc.player.fallDistance > 7.0) { 22 | accessor.setOnGround(true); 23 | mc.player.fallDistance = 0f; 24 | var vel = mc.player.getVelocity(); 25 | mc.player.setVelocity(vel.x, 0, vel.z); 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/noslow/NoSlowMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.noslow; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.systems.modules.Modules; 5 | import nekiplay.main.events.PlayerUseMultiplierEvent; 6 | import net.minecraft.client.MinecraftClient; 7 | 8 | public class NoSlowMode { 9 | protected final MinecraftClient mc; 10 | protected final NoSlowPlus settings; 11 | private final NoSlowModes type; 12 | 13 | public NoSlowMode(NoSlowModes type) { 14 | this.settings = Modules.get().get(NoSlowPlus.class); 15 | this.mc = MinecraftClient.getInstance(); 16 | this.type = type; 17 | } 18 | public void onUse(PlayerUseMultiplierEvent event) { } 19 | public void onTickEventPre(TickEvent.Pre event) { } 20 | public void onActivate() { } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/noslow/NoSlowModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.noslow; 2 | 3 | public enum NoSlowModes { 4 | Vanila, 5 | NCP_Strict, 6 | Grim_1dot8, 7 | Grim_New, 8 | Matrix; 9 | 10 | @Override 11 | public String toString() { 12 | return super.toString().replace('_', ' ').replaceAll("dot", "."); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/noslow/modes/Grim.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.noslow.modes; 2 | 3 | import nekiplay.main.events.PlayerUseMultiplierEvent; 4 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowMode; 5 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowModes; 6 | import net.minecraft.client.network.ClientPlayNetworkHandler; 7 | import net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket; 8 | 9 | public class Grim extends NoSlowMode { 10 | public Grim() { 11 | super(NoSlowModes.Grim_1dot8); 12 | } 13 | @Override 14 | public void onUse(PlayerUseMultiplierEvent event) { 15 | if (mc.player.isSneaking()) { 16 | event.setForward(settings.sneakForward.get().floatValue()); 17 | event.setSideways(settings.sneakSideways.get().floatValue()); 18 | } 19 | else if (mc.player.isUsingItem()) { 20 | event.setForward(settings.usingForward.get().floatValue()); 21 | event.setSideways(settings.usingSideways.get().floatValue()); 22 | } 23 | else { 24 | event.setForward(settings.otherForward.get().floatValue()); 25 | event.setSideways(settings.otherSideways.get().floatValue()); 26 | } 27 | 28 | if (mc.player.isUsingItem()) { 29 | ClientPlayNetworkHandler network = mc.getNetworkHandler(); 30 | assert network != null; 31 | network.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().getSelectedSlot() % 8 + 1)); 32 | network.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().getSelectedSlot())); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/noslow/modes/GrimNew.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.noslow.modes; 2 | 3 | import nekiplay.main.events.PlayerUseMultiplierEvent; 4 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowMode; 5 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowModes; 6 | import net.minecraft.client.network.ClientPlayNetworkHandler; 7 | import net.minecraft.network.packet.c2s.play.PlayerInteractItemC2SPacket; 8 | import net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket; 9 | import net.minecraft.util.Hand; 10 | 11 | public class GrimNew extends NoSlowMode { 12 | public GrimNew() { 13 | super(NoSlowModes.Grim_New); 14 | } 15 | 16 | @Override 17 | public void onUse(PlayerUseMultiplierEvent event) { 18 | if (mc.player.isSneaking()) { 19 | event.setForward(settings.sneakForward.get().floatValue()); 20 | event.setSideways(settings.sneakSideways.get().floatValue()); 21 | } 22 | else if (mc.player.isUsingItem()) { 23 | event.setForward(settings.usingForward.get().floatValue()); 24 | event.setSideways(settings.usingSideways.get().floatValue()); 25 | } 26 | else { 27 | event.setForward(settings.otherForward.get().floatValue()); 28 | event.setSideways(settings.otherSideways.get().floatValue()); 29 | } 30 | 31 | Hand hand = mc.player.getActiveHand(); 32 | ClientPlayNetworkHandler network = mc.getNetworkHandler(); 33 | assert network != null; 34 | if (hand == Hand.MAIN_HAND) { 35 | network.sendPacket(new PlayerInteractItemC2SPacket(Hand.OFF_HAND, 0, 0, 0)); 36 | } 37 | else if (hand == Hand.OFF_HAND) { 38 | network.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().getSelectedSlot() % 8 + 1)); 39 | network.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().getSelectedSlot())); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/noslow/modes/Matrix.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.noslow.modes; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowMode; 5 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowModes; 6 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowPlus; 7 | import net.minecraft.util.math.Vec3d; 8 | 9 | public class Matrix extends NoSlowMode { 10 | public Matrix() { 11 | super(NoSlowModes.Matrix); 12 | } 13 | private int ticks = 0; 14 | 15 | @Override 16 | public void onActivate() { 17 | ticks = 0; 18 | } 19 | 20 | @Override 21 | public void onTickEventPre(TickEvent.Pre event) { 22 | if (mc.player.isUsingItem()) { 23 | if (mc.player.isOnGround()) { 24 | if (ticks % 2 == 0) { 25 | float speed = 0.4f; 26 | Vec3d vel = mc.player.getVelocity(); 27 | double x = vel.getX() * speed; 28 | double z = vel.getZ() * speed; 29 | 30 | mc.player.setVelocity(x, vel.getY(), z); 31 | } 32 | } 33 | } 34 | ticks++; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/noslow/modes/NCPStrict.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.noslow.modes; 2 | 3 | import nekiplay.main.events.PlayerUseMultiplierEvent; 4 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowMode; 5 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowModes; 6 | import net.minecraft.client.network.ClientPlayNetworkHandler; 7 | import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket; 8 | import net.minecraft.util.math.Direction; 9 | 10 | public class NCPStrict extends NoSlowMode { 11 | public NCPStrict() { 12 | super(NoSlowModes.NCP_Strict); 13 | } 14 | @Override 15 | public void onUse(PlayerUseMultiplierEvent event) { 16 | if (mc.player.isSneaking()) { 17 | event.setForward(settings.sneakForward.get().floatValue()); 18 | event.setSideways(settings.sneakSideways.get().floatValue()); 19 | } 20 | else if (mc.player.isUsingItem()) { 21 | event.setForward(settings.usingForward.get().floatValue()); 22 | event.setSideways(settings.usingSideways.get().floatValue()); 23 | } 24 | else { 25 | event.setForward(settings.otherForward.get().floatValue()); 26 | event.setSideways(settings.otherSideways.get().floatValue()); 27 | } 28 | 29 | if (mc.player.isUsingItem()) { 30 | ClientPlayNetworkHandler network = mc.getNetworkHandler(); 31 | network.sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.ABORT_DESTROY_BLOCK, mc.player.getBlockPos(), Direction.DOWN)); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/noslow/modes/Vanila.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.noslow.modes; 2 | 3 | import nekiplay.main.events.PlayerUseMultiplierEvent; 4 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowMode; 5 | import nekiplay.meteorplus.features.modules.movement.noslow.NoSlowModes; 6 | 7 | public class Vanila extends NoSlowMode { 8 | public Vanila() { 9 | super(NoSlowModes.Vanila); 10 | } 11 | 12 | @Override 13 | public void onUse(PlayerUseMultiplierEvent event) { 14 | if (mc.player.isSneaking()) { 15 | event.setForward(settings.sneakForward.get().floatValue()); 16 | event.setSideways(settings.sneakSideways.get().floatValue()); 17 | } 18 | else if (mc.player.isUsingItem()) { 19 | event.setForward(settings.usingForward.get().floatValue()); 20 | event.setSideways(settings.usingSideways.get().floatValue()); 21 | } 22 | else { 23 | event.setForward(settings.otherForward.get().floatValue()); 24 | event.setSideways(settings.otherSideways.get().floatValue()); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/scaffold/ScaffoldMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.scaffold; 2 | 3 | import meteordevelopment.meteorclient.systems.modules.Modules; 4 | import nekiplay.main.events.PlayerUseMultiplierEvent; 5 | import net.minecraft.client.MinecraftClient; 6 | 7 | public class ScaffoldMode { 8 | protected final MinecraftClient mc; 9 | protected final ScaffoldPlus settings; 10 | private final ScaffoldModes type; 11 | 12 | public ScaffoldMode(ScaffoldModes type) { 13 | this.settings = Modules.get().get(ScaffoldPlus.class); 14 | this.mc = MinecraftClient.getInstance(); 15 | this.type = type; 16 | } 17 | public void onUse(PlayerUseMultiplierEvent event) { } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/scaffold/ScaffoldModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.scaffold; 2 | 3 | public enum ScaffoldModes { 4 | Eagle 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/scaffold/ScaffoldPlus.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.scaffold; 2 | 3 | import meteordevelopment.meteorclient.systems.modules.Categories; 4 | import meteordevelopment.meteorclient.systems.modules.Module; 5 | 6 | /* 7 | Not done 8 | */ 9 | public class ScaffoldPlus extends Module { 10 | public ScaffoldPlus() { 11 | super(Categories.Movement, "Scaffold+", "Better scaffold module"); 12 | } 13 | 14 | @Override 15 | public String toString() { 16 | return super.toString().replace('_', ' ').replaceAll("dot", "."); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/speed/SpeedMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.speed; 2 | 3 | import meteordevelopment.meteorclient.events.entity.player.JumpVelocityMultiplierEvent; 4 | import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent; 5 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 6 | import meteordevelopment.meteorclient.events.world.TickEvent; 7 | import meteordevelopment.meteorclient.systems.modules.Modules; 8 | import net.minecraft.client.MinecraftClient; 9 | import net.minecraft.entity.effect.StatusEffects; 10 | 11 | public class SpeedMode { 12 | protected final MinecraftClient mc; 13 | protected final SpeedPlus settings; 14 | private final SpeedModes type; 15 | 16 | public SpeedMode(SpeedModes type) { 17 | this.settings = Modules.get().get(SpeedPlus.class); 18 | this.mc = MinecraftClient.getInstance(); 19 | this.type = type; 20 | } 21 | 22 | public void onReceivePacket(PacketEvent.Receive event) {} 23 | public void onSendPacket(PacketEvent.Send event) {} 24 | public void onSentPacket(PacketEvent.Sent event) {} 25 | public void onPlayerMoveEvent(PlayerMoveEvent event) {} 26 | 27 | public void onTickEventPre(TickEvent.Pre event) {} 28 | public void onTickEventPost(TickEvent.Post event) {} 29 | 30 | public void onJump(JumpVelocityMultiplierEvent event) {} 31 | 32 | public void onActivate() {} 33 | public void onDeactivate() {} 34 | 35 | protected double getDefaultSpeed() { 36 | double defaultSpeed = 0.2873; 37 | if (mc.player.hasStatusEffect(StatusEffects.SPEED)) { 38 | int amplifier = mc.player.getStatusEffect(StatusEffects.SPEED).getAmplifier(); 39 | defaultSpeed *= 1.0 + 0.2 * (amplifier + 1); 40 | } 41 | if (mc.player.hasStatusEffect(StatusEffects.SLOWNESS)) { 42 | int amplifier = mc.player.getStatusEffect(StatusEffects.SLOWNESS).getAmplifier(); 43 | defaultSpeed /= 1.0 + 0.2 * (amplifier + 1); 44 | } 45 | return defaultSpeed; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/speed/SpeedModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.speed; 2 | 3 | public enum SpeedModes { 4 | NCP_Hop, 5 | Matrix_Exploit, 6 | Matrix_Exploit_2, 7 | Matrix_6dot7dot0, 8 | Matrix, 9 | Vulcan, 10 | Vulcan_2dot8dot6, 11 | AAC_Hop_4dot3dot8; 12 | 13 | @Override 14 | public String toString() { 15 | String name = name(); 16 | return super.toString().replace('_', ' ').replaceAll("dot", "."); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/speed/modes/AACHop438.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.speed.modes; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.systems.modules.Modules; 5 | import meteordevelopment.meteorclient.systems.modules.world.Timer; 6 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 7 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedMode; 8 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedModes; 9 | 10 | public class AACHop438 extends SpeedMode { 11 | public AACHop438() { 12 | super(SpeedModes.AAC_Hop_4dot3dot8); 13 | } 14 | 15 | @Override 16 | public void onDeactivate() { 17 | Modules.get().get(Timer.class).setOverride(Timer.OFF); 18 | } 19 | 20 | @Override 21 | public void onTickEventPre(TickEvent.Pre event) { 22 | Timer timer = Modules.get().get(Timer.class); 23 | timer.setOverride(Timer.OFF); 24 | if (!PlayerUtils.isMoving() || mc.player.isTouchingWater() || mc.player.isInLava() || 25 | mc.player.isClimbing() || mc.player.isRiding()) return; 26 | 27 | if (mc.player.isOnGround()) 28 | mc.player.jump(); 29 | else { 30 | if (mc.player.fallDistance <= 0.1) 31 | timer.setOverride(1.5); 32 | else if (mc.player.fallDistance < 1.3) 33 | timer.setOverride(0.7); 34 | else 35 | timer.setOverride(Timer.OFF); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/speed/modes/NCPHop.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.speed.modes; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.systems.modules.Modules; 5 | import meteordevelopment.meteorclient.systems.modules.world.Timer; 6 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 7 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedMode; 8 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedModes; 9 | 10 | public class NCPHop extends SpeedMode { 11 | public NCPHop() { 12 | super(SpeedModes.NCP_Hop); 13 | } 14 | 15 | @Override 16 | public void onActivate() { 17 | Modules.get().get(Timer.class).setOverride(1.0865f); 18 | } 19 | 20 | @Override 21 | public void onDeactivate() { 22 | Modules.get().get(Timer.class).setOverride(Timer.OFF); 23 | mc.player.getAbilities().setFlySpeed(0.02f); 24 | } 25 | 26 | @Override 27 | public void onTickEventPre(TickEvent.Pre event) { 28 | if (mc.player.isTouchingWater() || mc.player.isInLava() || 29 | mc.player.isClimbing() || mc.player.isRiding()) return; 30 | Timer timer = Modules.get().get(Timer.class); 31 | if (PlayerUtils.isMoving() && mc.player.isOnGround()) { 32 | mc.player.jump(); 33 | mc.player.getAbilities().setFlySpeed(0.0223f); 34 | } 35 | else { 36 | timer.setOverride(1); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/speed/modes/matrix/Matrix.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.speed.modes.matrix; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.systems.modules.Modules; 5 | import meteordevelopment.meteorclient.systems.modules.world.Timer; 6 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 7 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedMode; 8 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedModes; 9 | 10 | public class Matrix extends SpeedMode { 11 | public Matrix() { 12 | super(SpeedModes.Matrix); 13 | } 14 | 15 | @Override 16 | public void onDeactivate() { 17 | Modules.get().get(Timer.class).setOverride(Timer.OFF); 18 | if (mc.player != null) { 19 | mc.player.getAbilities().setFlySpeed(0.02f); 20 | } 21 | } 22 | 23 | @Override 24 | public void onTickEventPre(TickEvent.Pre event) { 25 | Timer timer = Modules.get().get(Timer.class); 26 | timer.setOverride(Timer.OFF); 27 | if (mc.player.isTouchingWater() || mc.player.isInLava() || 28 | mc.player.isClimbing() || mc.player.isRiding()) return; 29 | if (PlayerUtils.isMoving()) { 30 | if (mc.player.isOnGround()) { 31 | mc.player.jump(); 32 | mc.player.getAbilities().setFlySpeed(0.02098f); 33 | timer.setOverride(1.055f); 34 | } 35 | } 36 | else { 37 | timer.setOverride(1); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/speed/modes/matrix/Matrix6_7_0.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.speed.modes.matrix; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.mixininterface.IVec3d; 6 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 7 | import net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket; 8 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedMode; 9 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedModes; 10 | import nekiplay.meteorplus.utils.MovementUtils; 11 | 12 | public class Matrix6_7_0 extends SpeedMode { 13 | public Matrix6_7_0() { 14 | super(SpeedModes.Matrix_6dot7dot0); 15 | } 16 | 17 | private int noVelocityY = 0; 18 | 19 | @Override 20 | public void onDeactivate() { 21 | mc.player.getAbilities().setFlySpeed(0.02f); 22 | } 23 | 24 | @Override 25 | public void onTickEventPre(TickEvent.Pre event) { 26 | work(); 27 | } 28 | @Override 29 | public void onTickEventPost(TickEvent.Post event) { 30 | //work(); 31 | } 32 | 33 | public void onReceivePacket(PacketEvent.Receive event) { 34 | if (event.packet instanceof EntityVelocityUpdateS2CPacket velocity) { 35 | if (mc.player != null && mc.world != null && mc.world.getEntityById(velocity.getEntityId()) != null) { 36 | if (mc.player == mc.world.getEntityById(velocity.getEntityId())) 37 | noVelocityY = 10; 38 | } 39 | } 40 | } 41 | 42 | private void work() { 43 | if (!mc.player.isOnGround() && noVelocityY <= 0) { 44 | if (mc.player.getVelocity().y > 0) { 45 | mc.player.getVelocity().add(0, -0.0005, 0); 46 | } 47 | mc.player.getVelocity().add(0, -0.0094001145141919810, 0); 48 | } 49 | if (!mc.player.isOnGround() && noVelocityY < 8) { 50 | if (MovementUtils.getSpeed() < 0.2177 && noVelocityY < 8) { 51 | MovementUtils.strafe(0.2177f); 52 | } 53 | } 54 | if (Math.abs(mc.player.getAbilities().getFlySpeed()) < 0.1) { 55 | mc.player.getAbilities().setFlySpeed(0.026f); 56 | } 57 | else { 58 | mc.player.getAbilities().setFlySpeed(0.0247f); 59 | } 60 | if (mc.player.isOnGround() && PlayerUtils.isMoving()) { 61 | mc.options.jumpKey.setPressed(false); 62 | mc.player.jump(); 63 | IVec3d v = (IVec3d) mc.player.getVelocity(); 64 | v.meteor$setY(0.41050001145141919810); 65 | if (Math.abs(mc.player.getAbilities().getFlySpeed()) < 0.1) { 66 | MovementUtils.strafe(MovementUtils.getSpeed()); 67 | } 68 | } 69 | if (!PlayerUtils.isMoving()) { 70 | IVec3d v = (IVec3d) mc.player.getVelocity(); 71 | v.meteor$setXZ(0, 0); 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/speed/modes/matrix/MatrixExploit.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.speed.modes.matrix; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.mixininterface.IVec3d; 5 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 6 | import meteordevelopment.meteorclient.utils.player.InvUtils; 7 | import net.minecraft.item.Items; 8 | import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket; 9 | import net.minecraft.util.math.Vec3d; 10 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedMode; 11 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedModes; 12 | import nekiplay.meteorplus.utils.ElytraUtils; 13 | 14 | public class MatrixExploit extends SpeedMode { 15 | public MatrixExploit() { 16 | super(SpeedModes.Matrix_Exploit); 17 | } 18 | 19 | @Override 20 | public void onActivate() { 21 | FindItemResult elytra = InvUtils.find(Items.ELYTRA); 22 | if (!elytra.found()) { 23 | settings.error("Elytra not found"); 24 | settings.toggle(); 25 | } 26 | else { 27 | tick = 0; 28 | } 29 | } 30 | 31 | public void startFly() { 32 | mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_FALL_FLYING)); 33 | } 34 | int tick = 0; 35 | 36 | @Override 37 | public void onTickEventPre(TickEvent.Pre event) { 38 | FindItemResult elytra = InvUtils.find(Items.ELYTRA); 39 | if (elytra.found()) { 40 | if (tick == 0) { 41 | InvUtils.move().from(elytra.slot()).toArmor(2); 42 | ElytraUtils.startFly(); 43 | ElytraUtils.startFly(); 44 | InvUtils.move().fromArmor(2).to(elytra.slot()); 45 | tick = 21; 46 | } 47 | else { 48 | tick--; 49 | } 50 | 51 | float yaw = mc.player.getYaw(); 52 | Vec3d forward = Vec3d.fromPolar(0, yaw); 53 | Vec3d right = Vec3d.fromPolar(0, yaw + 90); 54 | double velX = 0; 55 | double velZ = 0; 56 | double s = settings.speedMatrix.get(); 57 | double speedValue = 0.01; 58 | if (mc.options.forwardKey.isPressed()) { 59 | velX += forward.x * s * speedValue; 60 | velZ += forward.z * s * speedValue; 61 | } 62 | if (mc.options.backKey.isPressed()) { 63 | velX -= forward.x * s * speedValue; 64 | velZ -= forward.z * s * speedValue; 65 | } 66 | 67 | if (mc.options.rightKey.isPressed()) { 68 | velX += right.x * s * speedValue; 69 | velZ += right.z * s * speedValue; 70 | } 71 | if (mc.options.leftKey.isPressed()) { 72 | velX -= right.x * s * speedValue; 73 | velZ -= right.z * s * speedValue; 74 | } 75 | double y = mc.player.getVelocity().y; 76 | ((IVec3d) mc.player.getVelocity()).meteor$set(velX, y, velZ); 77 | } 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/speed/modes/vulcan/Vulcan.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.speed.modes.vulcan; 2 | 3 | import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent; 4 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 5 | import meteordevelopment.meteorclient.utils.player.InvUtils; 6 | import meteordevelopment.meteorclient.utils.player.SlotUtils; 7 | import net.minecraft.entity.EquipmentSlot; 8 | import net.minecraft.entity.effect.StatusEffects; 9 | import net.minecraft.item.Item; 10 | import net.minecraft.item.Items; 11 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedMode; 12 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedModes; 13 | import nekiplay.meteorplus.utils.CustomSpeedUtils; 14 | 15 | import java.util.Objects; 16 | 17 | public class Vulcan extends SpeedMode { 18 | public Vulcan() { 19 | super(SpeedModes.Vulcan); 20 | } 21 | public Item chestPlate; 22 | @Override 23 | public void onDeactivate() { 24 | FindItemResult chest = InvUtils.find(chestPlate); 25 | if (chest.found() && mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() == Items.ELYTRA && settings.autoSwapVulcan.get()) { 26 | InvUtils.move().from(chest.slot()).toArmor(2); 27 | } 28 | } 29 | 30 | @Override 31 | public void onActivate() { 32 | FindItemResult elytra = InvUtils.find(Items.ELYTRA); 33 | if (!elytra.found()) { 34 | settings.error("Elytra not found"); 35 | settings.toggle(); 36 | } 37 | else { 38 | if (!SlotUtils.isArmor(elytra.slot()) && settings.autoSwapVulcan.get()) { 39 | if (mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() != Items.ELYTRA) { 40 | chestPlate = mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem(); 41 | InvUtils.move().from(elytra.slot()).toArmor(2); 42 | } 43 | } 44 | } 45 | } 46 | 47 | @Override 48 | public void onPlayerMoveEvent(PlayerMoveEvent event) { 49 | if (mc.player != null && mc.player.getEquippedStack(EquipmentSlot.CHEST).getItem() == Items.ELYTRA) { 50 | if (mc.player.hasStatusEffect(StatusEffects.SPEED) && mc.player.getStatusEffect(StatusEffects.SPEED) != null) { 51 | if (Objects.requireNonNull(mc.player.getStatusEffect(StatusEffects.SPEED)).getAmplifier() == 1) { 52 | CustomSpeedUtils.applySpeed(event, settings.speedVulcanef2.get()); 53 | } 54 | else if (Objects.requireNonNull(mc.player.getStatusEffect(StatusEffects.SPEED)).getAmplifier() == 0) { 55 | CustomSpeedUtils.applySpeed(event, settings.speedVulcanef1.get()); 56 | } 57 | } 58 | else { 59 | CustomSpeedUtils.applySpeed(event, settings.speedVulcanef0.get()); 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/speed/modes/vulcan/Vulcan_2_8_6.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.speed.modes.vulcan; 2 | 3 | import meteordevelopment.meteorclient.events.entity.player.JumpVelocityMultiplierEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 6 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedMode; 7 | import nekiplay.meteorplus.features.modules.movement.speed.SpeedModes; 8 | import nekiplay.meteorplus.utils.MovementUtils; 9 | import net.minecraft.entity.effect.StatusEffect; 10 | import net.minecraft.entity.effect.StatusEffects; 11 | import net.minecraft.util.math.Vec3d; 12 | 13 | public class Vulcan_2_8_6 extends SpeedMode { 14 | public Vulcan_2_8_6() { 15 | super(SpeedModes.Vulcan_2dot8dot6); 16 | } 17 | 18 | private int ticks = 0; 19 | private int speedLevel = 0; 20 | private boolean jumped = false; 21 | 22 | @Override 23 | public void onJump(JumpVelocityMultiplierEvent event) { 24 | ticks = 0; 25 | speedLevel = 0; 26 | jumped = true; 27 | if (mc.player.hasStatusEffect(StatusEffects.SPEED)) { 28 | speedLevel = mc.player.getStatusEffect(StatusEffects.SPEED).getAmplifier(); 29 | } 30 | } 31 | 32 | @Override 33 | public void onTickEventPre(TickEvent.Pre event) { 34 | if (jumped) { 35 | ticks++; 36 | if (ticks == 1) { 37 | MovementUtils.strafe(0.3355 * (1 + speedLevel * 0.3819)); 38 | } 39 | if (ticks == 2) { 40 | if (mc.player.isSprinting()) { 41 | MovementUtils.strafe(0.3284 * (1 + speedLevel * 0.355)); 42 | } 43 | } 44 | if (ticks == 4) { 45 | Vec3d vel = mc.player.getPos(); 46 | mc.player.setPos(vel.x, vel.y - 0.376, vel.z); 47 | } 48 | 49 | if (ticks == 6) { 50 | if (mc.player.speed > 0.298) { 51 | MovementUtils.strafe(0.298); 52 | } 53 | jumped = false; 54 | } 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/spider/SpiderMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.spider; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import net.minecraft.client.MinecraftClient; 7 | 8 | public class SpiderMode { 9 | protected final MinecraftClient mc; 10 | protected final SpiderPlus settings; 11 | private final SpiderModes type; 12 | 13 | public SpiderMode(SpiderModes type) { 14 | this.settings = Modules.get().get(SpiderPlus.class); 15 | this.mc = MinecraftClient.getInstance(); 16 | this.type = type; 17 | } 18 | 19 | public void onSendPacket(PacketEvent.Send event) {} 20 | public void onSentPacket(PacketEvent.Sent event) {} 21 | 22 | public void onTickEventPre(TickEvent.Pre event) {} 23 | public void onTickEventPost(TickEvent.Post event) {} 24 | 25 | public void onActivate() {} 26 | public void onDeactivate() {} 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/spider/SpiderModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.spider; 2 | 3 | public enum SpiderModes { 4 | Matrix, 5 | Vulcan, 6 | Elytra_clip; 7 | 8 | @Override 9 | public String toString() { 10 | return super.toString().replace('_', ' ').replaceAll("_Lower_", "<"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/movement/spider/SpiderPlus.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.movement.spider; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.EnumSetting; 6 | import meteordevelopment.meteorclient.settings.IntSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Categories; 10 | import meteordevelopment.meteorclient.systems.modules.Module; 11 | import meteordevelopment.orbit.EventHandler; 12 | import nekiplay.meteorplus.features.modules.movement.spider.modes.Eclip; 13 | import nekiplay.meteorplus.features.modules.movement.spider.modes.Matrix; 14 | import nekiplay.meteorplus.features.modules.movement.spider.modes.Vulcan; 15 | 16 | public class SpiderPlus extends Module { 17 | public SpiderPlus() { 18 | super(Categories.Movement, "spider+", "Bypass spider"); 19 | onSpiderModeChanged(spiderMode.get()); 20 | } 21 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 22 | 23 | 24 | public final Setting spiderMode = sgGeneral.add(new EnumSetting.Builder() 25 | .name("mode") 26 | .description("The method of applying spider.") 27 | .defaultValue(SpiderModes.Matrix) 28 | .onModuleActivated(spiderModesSetting -> onSpiderModeChanged(spiderModesSetting.get())) 29 | .onChanged(this::onSpiderModeChanged) 30 | .build() 31 | ); 32 | 33 | public final Setting Blocks = sgGeneral.add(new IntSetting.Builder() 34 | .name("blocks") 35 | .defaultValue(3) 36 | .description("Don't touch if you don't know what it does.") 37 | .visible(() -> spiderMode.get() == SpiderModes.Elytra_clip) 38 | .range(0, 10) 39 | .build() 40 | ); 41 | 42 | private SpiderMode currentMode; 43 | 44 | @Override 45 | public void onActivate() { 46 | currentMode.onActivate(); 47 | } 48 | 49 | @Override 50 | public void onDeactivate() { 51 | currentMode.onDeactivate(); 52 | } 53 | 54 | @EventHandler 55 | private void onPreTick(TickEvent.Pre event) { 56 | currentMode.onTickEventPre(event); 57 | } 58 | 59 | @EventHandler 60 | private void onPostTick(TickEvent.Post event) { 61 | currentMode.onTickEventPost(event); 62 | } 63 | @EventHandler 64 | public void onSendPacket(PacketEvent.Send event) { 65 | currentMode.onSendPacket(event); 66 | } 67 | @EventHandler 68 | public void onSentPacket(PacketEvent.Sent event) { 69 | currentMode.onSentPacket(event); 70 | } 71 | 72 | 73 | private void onSpiderModeChanged(SpiderModes mode) { 74 | switch (mode) { 75 | case Matrix: currentMode = new Matrix(); break; 76 | case Vulcan: currentMode = new Vulcan(); break; 77 | case Elytra_clip: currentMode = new Eclip(); break; 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/render/ItemHighlightPlus.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.render; 2 | 3 | import meteordevelopment.meteorclient.settings.GenericSetting; 4 | import meteordevelopment.meteorclient.settings.ItemListSetting; 5 | import meteordevelopment.meteorclient.settings.Setting; 6 | import meteordevelopment.meteorclient.settings.SettingGroup; 7 | import meteordevelopment.meteorclient.systems.modules.Categories; 8 | import meteordevelopment.meteorclient.systems.modules.Module; 9 | import meteordevelopment.meteorclient.utils.render.color.SettingColor; 10 | import nekiplay.meteorplus.MeteorPlusAddon; 11 | import nekiplay.meteorplus.settings.items.HiglightItemData; 12 | import nekiplay.meteorplus.settings.items.ItemDataSetting; 13 | import net.minecraft.item.Item; 14 | import net.minecraft.item.Items; 15 | 16 | import java.util.List; 17 | import java.util.Map; 18 | 19 | public class ItemHighlightPlus extends Module { 20 | public ItemHighlightPlus() { 21 | super(Categories.Render, "Item-Highlight+", "Highlights selected items when in inventorys and guis."); 22 | } 23 | 24 | public final SettingGroup sgGeneral = settings.getDefaultGroup(); 25 | public final Setting> whitelist = sgGeneral.add(new ItemListSetting.Builder() 26 | .name("whitelist") 27 | .description("Items to highlight.") 28 | .defaultValue( 29 | Items.ELYTRA 30 | ) 31 | .build() 32 | ); 33 | 34 | public final Setting defaultBlockConfig = sgGeneral.add(new GenericSetting.Builder() 35 | .name("whitelist-default-config") 36 | .description("Default item config.") 37 | .defaultValue( 38 | new HiglightItemData( 39 | new SettingColor(0, 255, 200, 25) 40 | ) 41 | ) 42 | .build() 43 | ); 44 | public final Setting> itemsConfigs = sgGeneral.add(new ItemDataSetting.Builder() 45 | .name("whitelist-items-configs") 46 | .description("Config for each highlight.") 47 | .defaultData(defaultBlockConfig) 48 | .build() 49 | ); 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/render/KillEffect.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.render; 2 | 3 | import meteordevelopment.meteorclient.events.entity.player.AttackEntityEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.EnumSetting; 6 | import meteordevelopment.meteorclient.settings.Setting; 7 | import meteordevelopment.meteorclient.settings.SettingGroup; 8 | import meteordevelopment.meteorclient.systems.modules.Categories; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.orbit.EventHandler; 11 | import nekiplay.meteorplus.features.modules.movement.fly.FlyModes; 12 | import net.minecraft.entity.Entity; 13 | import net.minecraft.entity.EntityType; 14 | import net.minecraft.entity.LightningEntity; 15 | import net.minecraft.entity.LivingEntity; 16 | import net.minecraft.particle.ParticleTypes; 17 | 18 | import java.util.ArrayList; 19 | 20 | public class KillEffect extends Module { 21 | public KillEffect() { 22 | super(Categories.Render, "kill-effect", "Render kill effect"); 23 | } 24 | public final ArrayList entityList = new ArrayList<>(); 25 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 26 | 27 | public final Setting mode = sgGeneral.add(new EnumSetting.Builder() 28 | .name("effect") 29 | .description("The method of applying fly.") 30 | .defaultValue(Effects.Lighting_Bolt) 31 | .build() 32 | ); 33 | 34 | 35 | public enum Effects { 36 | Lighting_Bolt, 37 | Falling_Lava; 38 | 39 | 40 | @Override 41 | public String toString() { 42 | return super.toString().replaceAll("_", " "); 43 | } 44 | } 45 | 46 | @EventHandler 47 | public void onTickEvent(TickEvent.Post event) { 48 | for (Entity entity : mc.world.getEntities()) { 49 | if (entity instanceof LivingEntity livingEntity) { 50 | if (livingEntity.deathTime > 0 || livingEntity.getHealth() <= 0) { 51 | if (!entityList.contains(entity)) { 52 | switch (mode.get()) { 53 | case Lighting_Bolt -> { 54 | LightningEntity lightning = new LightningEntity(EntityType.LIGHTNING_BOLT, mc.world); 55 | lightning.refreshPositionAfterTeleport(livingEntity.getPos()); 56 | mc.world.addEntity(lightning); 57 | } 58 | case Falling_Lava -> { 59 | for (int i = 0; i < entity.getHeight() * 10; i++) { 60 | for (int j = 0; j < entity.getWidth() * 10; j++) { 61 | for (int k = 0; k < entity.getWidth() * 10; k++) { 62 | mc.world.addParticleClient(ParticleTypes.FALLING_LAVA, entity.getX() + j * 0.1, entity.getY() + i * 0.1, entity.getZ() + k * 0.1, 0, 0, 0); 63 | } 64 | } 65 | } 66 | } 67 | default -> { 68 | } 69 | } 70 | entityList.add(entity); 71 | } 72 | } 73 | } 74 | } 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/render/holograms/HologramData.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.render.holograms; 2 | 3 | import meteordevelopment.meteorclient.utils.render.color.Color; 4 | import meteordevelopment.meteorclient.utils.world.Dimension; 5 | import net.minecraft.util.math.BlockPos; 6 | 7 | import java.util.ArrayList; 8 | 9 | public class HologramData { 10 | public double x; 11 | public double y; 12 | public double z; 13 | public String text; 14 | public Color color; 15 | public int item_id = 0; 16 | public int item_scale = 2; 17 | 18 | public HologramData() { 19 | 20 | } 21 | public HologramData(double x, double y, double z, String text, String dimension, Color color, double max_render_distance) { 22 | this.x = x; 23 | this.y = y; 24 | this.z = z; 25 | this.color = color; 26 | 27 | this.text = text; 28 | } 29 | 30 | public HologramData(BlockPos pos, String text, Dimension dimension, Color color, double max_render_distance) { 31 | this.x = pos.getX(); 32 | this.y = pos.getY(); 33 | this.z = pos.getZ(); 34 | this.color = color; 35 | 36 | this.text = text; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/render/holograms/HologramDataListed.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.render.holograms; 2 | 3 | import meteordevelopment.meteorclient.utils.render.color.Color; 4 | import meteordevelopment.meteorclient.utils.world.Dimension; 5 | import nekiplay.meteorplus.features.modules.world.customblocks.PosData; 6 | import net.minecraft.util.math.BlockPos; 7 | 8 | import java.util.ArrayList; 9 | import java.util.Objects; 10 | 11 | public class HologramDataListed { 12 | public double x; 13 | public double y; 14 | public double z; 15 | public String text; 16 | public String dimension; 17 | public Color color; 18 | public double max_render_distance = 16; 19 | public double scale = 1; 20 | public boolean distanceScaling = false; 21 | public int item_id = 0; 22 | public int item_scale = 2; 23 | 24 | public ArrayList other_holograms = new ArrayList(); 25 | 26 | public HologramDataListed() { 27 | 28 | } 29 | public HologramDataListed(double x, double y, double z, String text, String dimension, Color color, double max_render_distance) { 30 | this.x = x; 31 | this.y = y; 32 | this.z = z; 33 | this.color = color; 34 | 35 | this.text = text; 36 | this.dimension = dimension; 37 | this.max_render_distance = max_render_distance; 38 | } 39 | 40 | public HologramDataListed(BlockPos pos, String text, Dimension dimension, Color color, double max_render_distance) { 41 | this.x = pos.getX(); 42 | this.y = pos.getY(); 43 | this.z = pos.getZ(); 44 | this.color = color; 45 | 46 | this.text = text; 47 | this.dimension = dimension.name(); 48 | this.max_render_distance = max_render_distance; 49 | } 50 | 51 | @Override 52 | public boolean equals(Object obj) { 53 | if (obj == this) { 54 | return true; 55 | } 56 | if (obj == null || obj.getClass() != this.getClass()) { 57 | return false; 58 | } 59 | HologramDataListed otherPos = (HologramDataListed) obj; 60 | if (x == otherPos.x && y == otherPos.y && z == otherPos.z) { 61 | return true; 62 | } 63 | return super.equals(obj); 64 | } 65 | 66 | @Override 67 | public int hashCode() { 68 | return Objects.hash(x, y, z); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/world/autoobsidianmine/AutoObsidianFarmMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.world.autoobsidianmine; 2 | 3 | import meteordevelopment.meteorclient.events.world.CollisionShapeEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import net.minecraft.client.MinecraftClient; 7 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 8 | 9 | public class AutoObsidianFarmMode { 10 | protected final MinecraftClient mc; 11 | protected final AutoObsidianFarm settings; 12 | private final AutoObsidianFarmModes type; 13 | 14 | public AutoObsidianFarmMode(AutoObsidianFarmModes type) { 15 | this.settings = Modules.get().get(AutoObsidianFarm.class);; 16 | this.mc = MinecraftClient.getInstance(); 17 | this.type = type; 18 | } 19 | 20 | public void onActivate() {} 21 | public void onDeactivate() {} 22 | public void onTickEventPre(TickEvent.Pre event) {} 23 | public void onTickEventPost(TickEvent.Post event) {} 24 | public void onCollisionShape(CollisionShapeEvent event) {} 25 | 26 | public void onMovePacket(PlayerMoveC2SPacket playerMove) {} 27 | 28 | public String getInfoString() { return ""; } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/world/autoobsidianmine/AutoObsidianFarmModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.world.autoobsidianmine; 2 | 3 | public enum AutoObsidianFarmModes { 4 | Portals_Vanila, 5 | Portal_Homes, 6 | Cauldrons; 7 | 8 | @Override 9 | public String toString() { 10 | String name = name(); 11 | return name.replace('_', ' '); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/world/customblocks/CustomBlockData.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.world.customblocks; 2 | 3 | import net.minecraft.util.math.BlockPos; 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | public class CustomBlockData { 9 | public int block_id; 10 | public List positions = new ArrayList(); 11 | 12 | public String world; 13 | public String dimension; 14 | public CustomBlockData(BlockPos pos,int block_id) { 15 | this.positions.add(new PosData(pos)); 16 | this.block_id = block_id; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/world/customblocks/PosData.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.world.customblocks; 2 | 3 | import net.minecraft.util.math.BlockPos; 4 | 5 | import java.util.Objects; 6 | 7 | public class PosData { 8 | public double x; 9 | public double y; 10 | public double z; 11 | 12 | 13 | public PosData(BlockPos pos) { 14 | this.x = pos.getX(); 15 | this.y = pos.getY(); 16 | this.z = pos.getZ(); 17 | } 18 | 19 | @Override 20 | public boolean equals(Object obj) { 21 | if (obj == this) { 22 | return true; 23 | } 24 | if (obj == null || obj.getClass() != this.getClass()) { 25 | return false; 26 | } 27 | PosData otherPos = (PosData) obj; 28 | if (x == otherPos.x && y == otherPos.y && z == otherPos.z) { 29 | return true; 30 | } 31 | return super.equals(obj); 32 | } 33 | 34 | @Override 35 | public int hashCode() { 36 | return Objects.hash(x, y, z); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/world/timer/TimerMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.world.timer; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import meteordevelopment.meteorclient.systems.modules.world.Timer; 7 | import net.minecraft.client.MinecraftClient; 8 | 9 | public class TimerMode { 10 | protected final MinecraftClient mc; 11 | protected final TimerPlus settings; 12 | private final TimerModes type; 13 | protected Timer timer; 14 | 15 | public TimerMode(TimerModes type) { 16 | this.timer = Modules.get().get(Timer.class);; 17 | this.settings = Modules.get().get(TimerPlus.class);; 18 | this.mc = MinecraftClient.getInstance(); 19 | this.type = type; 20 | } 21 | 22 | public void onSendPacket(PacketEvent.Send event) {} 23 | public void onSentPacket(PacketEvent.Sent event) {} 24 | 25 | public void onTickEventPre(TickEvent.Pre event) {} 26 | public void onTickEventPost(TickEvent.Post event) {} 27 | 28 | public void onActivate() {} 29 | public void onDeactivate() {} 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/world/timer/TimerModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.world.timer; 2 | 3 | public enum TimerModes { 4 | NCP, 5 | Intave, 6 | Vulcan, 7 | Grim, 8 | OldFag, 9 | Custom, 10 | Custom_v2; 11 | 12 | @Override 13 | public String toString() { 14 | String name = name(); 15 | return name.replace('_', ' ').replaceAll("rem", ""); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/world/timer/modes/NCP.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.world.timer.modes; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.systems.modules.Modules; 5 | import meteordevelopment.meteorclient.systems.modules.world.Timer; 6 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 7 | import nekiplay.meteorplus.features.modules.world.timer.TimerMode; 8 | import nekiplay.meteorplus.features.modules.world.timer.TimerModes; 9 | 10 | import static nekiplay.meteorplus.features.modules.world.timer.TimerPlus.*; 11 | 12 | public class NCP extends TimerMode { 13 | public NCP() { 14 | super(TimerModes.NCP); 15 | } 16 | 17 | @Override 18 | public void onDeactivate() { 19 | timer.setOverride(Timer.OFF); 20 | } 21 | 22 | @Override 23 | public void onTickEventPre(TickEvent.Pre event) { 24 | if (mc.player == null) return; 25 | if (rechargeTimer == 0) { 26 | if (workingTimer > workingDelay) { 27 | rechargeTimer = rechargeDelay; 28 | workingTimer = 0; 29 | timer.setOverride(Timer.OFF); 30 | } 31 | else { 32 | if (settings.isActive()) { 33 | if (settings.onlyInMove.get() && PlayerUtils.isMoving()) { 34 | workingTimer++; 35 | timer.setOverride(timerMultiplier); 36 | } 37 | else if (!settings.onlyInMove.get()) { 38 | workingTimer++; 39 | timer.setOverride(timerMultiplier); 40 | } 41 | else { 42 | timer.setOverride(timerMultiplierOnRecharge); 43 | } 44 | } 45 | } 46 | } 47 | else { 48 | rechargeTimer--; 49 | if (settings.isActive()) { 50 | timer.setOverride(timerMultiplierOnRecharge); 51 | } 52 | else { 53 | timer.setOverride(Timer.OFF); 54 | } 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/world/timer/modes/NCPv2.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.world.timer.modes; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.systems.modules.world.Timer; 5 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 6 | import nekiplay.meteorplus.features.modules.world.timer.TimerMode; 7 | import nekiplay.meteorplus.features.modules.world.timer.TimerModes; 8 | 9 | import static nekiplay.meteorplus.features.modules.world.timer.TimerPlus.*; 10 | import static nekiplay.meteorplus.features.modules.world.timer.TimerPlus.timerMultiplierOnRecharge; 11 | 12 | public class NCPv2 extends TimerMode { 13 | public NCPv2() { 14 | super(TimerModes.Custom_v2); 15 | } 16 | 17 | @Override 18 | public void onDeactivate() { 19 | timer.setOverride(Timer.OFF); 20 | } 21 | 22 | @Override 23 | public void onTickEventPre(TickEvent.Pre event) { 24 | if (mc.player == null) return; 25 | if (rechargeTimer == 0) { 26 | if (workingTimer > workingDelay) { 27 | rechargeTimer = rechargeDelay; 28 | workingTimer = 0; 29 | timer.setOverride(Timer.OFF); 30 | } 31 | else { 32 | if (settings.isActive()) { 33 | if (settings.onlyInMove.get() && PlayerUtils.isMoving()) { 34 | workingTimer++; 35 | if (mc.player.isOnGround()) { 36 | timer.setOverride(timerMultiplier); 37 | } 38 | else { 39 | timer.setOverride(timerMultiplierInAir); 40 | } 41 | } 42 | else if (!settings.onlyInMove.get()) { 43 | workingTimer++; 44 | if (mc.player.isOnGround()) { 45 | timer.setOverride(timerMultiplier); 46 | } 47 | else { 48 | timer.setOverride(timerMultiplierInAir); 49 | } 50 | } 51 | else { 52 | timer.setOverride(timerMultiplierOnRecharge); 53 | } 54 | } 55 | } 56 | } 57 | else { 58 | rechargeTimer--; 59 | if (settings.isActive()) { 60 | timer.setOverride(timerMultiplierOnRecharge); 61 | } 62 | else { 63 | timer.setOverride(Timer.OFF); 64 | } 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/world/timer/modes/Vulcan.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.world.timer.modes; 2 | 3 | import meteordevelopment.meteorclient.events.world.TickEvent; 4 | import meteordevelopment.meteorclient.systems.modules.Modules; 5 | import meteordevelopment.meteorclient.systems.modules.world.Timer; 6 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 7 | import nekiplay.meteorplus.features.modules.world.timer.TimerMode; 8 | import nekiplay.meteorplus.features.modules.world.timer.TimerModes; 9 | import nekiplay.meteorplus.utils.algoritms.RandomUtils; 10 | 11 | import static nekiplay.meteorplus.features.modules.world.timer.TimerPlus.*; 12 | 13 | public class Vulcan extends TimerMode { 14 | public Vulcan() { 15 | super(TimerModes.Vulcan); 16 | } 17 | 18 | @Override 19 | public void onDeactivate() { 20 | timer.setOverride(Timer.OFF); 21 | } 22 | 23 | @Override 24 | public void onTickEventPre(TickEvent.Pre event) { 25 | if (mc.player == null) return; 26 | if (rechargeTimer == 0) { 27 | if (workingTimer > RandomUtils.nextInt(8, 10)) { 28 | int delay = RandomUtils.nextInt(510, 720); 29 | rechargeTimer = delay; 30 | rechargeDelay = delay; 31 | workingTimer = 0; 32 | timer.setOverride(Timer.OFF); 33 | } 34 | else { 35 | if (settings.isActive()) { 36 | if (settings.onlyInMove.get() && PlayerUtils.isMoving()) { 37 | workingTimer++; 38 | timer.setOverride(1.35); 39 | } 40 | else if (!settings.onlyInMove.get()) { 41 | workingTimer++; 42 | timer.setOverride(1.35); 43 | } 44 | else { 45 | timer.setOverride(Timer.OFF); 46 | } 47 | } 48 | } 49 | } 50 | else { 51 | rechargeTimer--; 52 | if (settings.isActive()) { 53 | timer.setOverride(Timer.OFF); 54 | } 55 | else { 56 | timer.setOverride(Timer.OFF); 57 | } 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/features/modules/world/zones/ZoneData.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.features.modules.world.zones; 2 | 3 | public class ZoneData { 4 | public double x_start; 5 | public double y_start; 6 | public double z_start; 7 | 8 | public double x_end; 9 | public double y_end; 10 | public double z_end; 11 | 12 | public boolean allowBaritoneBreaking = false; 13 | public boolean allowBaritonePlacing = false; 14 | 15 | public boolean allowPlayerBreaking = false; 16 | public boolean allowPlayerPlacing = false; 17 | 18 | public String name; 19 | 20 | public boolean showTitle; 21 | public String title; 22 | 23 | public boolean showBoundingBox; 24 | 25 | public String world; 26 | public String dimension; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/meteorclient/gui/DefaultSettingsWidgetFactoryMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.meteorclient.gui; 2 | 3 | import meteordevelopment.meteorclient.gui.DefaultSettingsWidgetFactory; 4 | import meteordevelopment.meteorclient.gui.GuiTheme; 5 | import meteordevelopment.meteorclient.gui.utils.SettingsWidgetFactory; 6 | import nekiplay.meteorplus.settings.MeteorPlusSettings; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.injection.At; 9 | import org.spongepowered.asm.mixin.injection.Inject; 10 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 11 | 12 | @Mixin(DefaultSettingsWidgetFactory.class) 13 | public abstract class DefaultSettingsWidgetFactoryMixin extends SettingsWidgetFactory { 14 | public DefaultSettingsWidgetFactoryMixin(GuiTheme theme) { 15 | super(theme); 16 | } 17 | 18 | @Inject(method = "", at = @At("TAIL"), remap = false) 19 | private void onInit(GuiTheme theme, CallbackInfo ci) { 20 | new MeteorPlusSettings(factories, this.theme).addSettings(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/meteorclient/gui/TitleScreenCreditsMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.meteorclient.gui; 2 | 3 | import meteordevelopment.meteorclient.utils.player.TitleScreenCredits; 4 | import net.minecraft.text.MutableText; 5 | import net.minecraft.text.Style; 6 | import net.minecraft.text.Text; 7 | import org.spongepowered.asm.mixin.Mixin; 8 | import org.spongepowered.asm.mixin.injection.At; 9 | import org.spongepowered.asm.mixin.injection.ModifyArgs; 10 | import org.spongepowered.asm.mixin.injection.invoke.arg.Args; 11 | 12 | import java.util.Calendar; 13 | 14 | @Mixin(TitleScreenCredits.class) 15 | public class TitleScreenCreditsMixin { 16 | @ModifyArgs(method = "add", at = @At(value = "INVOKE", target = "Lnet/minecraft/text/MutableText;append(Lnet/minecraft/text/Text;)Lnet/minecraft/text/MutableText;")) 17 | private static void modifyAddText(Args args) { 18 | Text text = args.get(0); 19 | if (text != null) { 20 | Calendar calendar = Calendar.getInstance(); 21 | int day = calendar.get(Calendar.DAY_OF_MONTH); 22 | int month = calendar.get(Calendar.MONTH) + 1; 23 | 24 | if (day <= 7 && month == 4) { 25 | MutableText newText = Text.literal(text.getString().replaceAll("Meteor", "Motor")) 26 | .setStyle(text.getStyle()); 27 | if (text instanceof MutableText mutableText) { 28 | newText = newText.styled(style -> { 29 | Style original = mutableText.getStyle(); 30 | if (original.getHoverEvent() != null) { 31 | style = style.withHoverEvent(original.getHoverEvent()); 32 | } 33 | if (original.getClickEvent() != null) { 34 | style = style.withClickEvent(original.getClickEvent()); 35 | } 36 | if (original.getInsertion() != null) { 37 | style = style.withInsertion(original.getInsertion()); 38 | } 39 | return style.withColor(original.getColor()) 40 | .withBold(original.isBold()) 41 | .withItalic(original.isItalic()) 42 | .withStrikethrough(original.isStrikethrough()) 43 | .withObfuscated(original.isObfuscated()); 44 | }); 45 | } 46 | 47 | args.set(0, newText); 48 | } 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/BlockESPMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.meteorclient.modules; 2 | 3 | import it.unimi.dsi.fastutil.longs.Long2ObjectMap; 4 | import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; 5 | import it.unimi.dsi.fastutil.objects.ObjectIterator; 6 | import meteordevelopment.meteorclient.systems.modules.Category; 7 | import meteordevelopment.meteorclient.systems.modules.Module; 8 | import meteordevelopment.meteorclient.systems.modules.render.blockesp.BlockESP; 9 | import meteordevelopment.meteorclient.systems.modules.render.blockesp.ESPBlock; 10 | import meteordevelopment.meteorclient.systems.modules.render.blockesp.ESPChunk; 11 | import org.spongepowered.asm.mixin.Final; 12 | import org.spongepowered.asm.mixin.Mixin; 13 | import org.spongepowered.asm.mixin.Shadow; 14 | import org.spongepowered.asm.mixin.Unique; 15 | 16 | @Mixin(value = BlockESP.class, remap = false) 17 | public class BlockESPMixin extends Module { 18 | 19 | @Final 20 | @Shadow 21 | private final Long2ObjectMap chunks = new Long2ObjectOpenHashMap<>(); 22 | 23 | public BlockESPMixin(Category category, String name, String description) { 24 | super(category, name, description); 25 | } 26 | 27 | @Unique 28 | private long renders = 0; 29 | 30 | @Override 31 | public String getInfoString() { 32 | renders = 0; 33 | synchronized (chunks) { 34 | for (ESPChunk chunk : chunks.values()) { 35 | if (!chunk.shouldBeDeleted()) { 36 | ESPBlock block; 37 | for (ObjectIterator var1 = chunk.blocks.values().iterator(); var1.hasNext(); block.loaded = false) { 38 | block = (ESPBlock) var1.next(); 39 | renders++; 40 | } 41 | } 42 | } 43 | } 44 | 45 | return "" + renders; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/CriticalsMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.meteorclient.modules; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import meteordevelopment.meteorclient.mixininterface.IPlayerInteractEntityC2SPacket; 5 | import meteordevelopment.meteorclient.settings.BoolSetting; 6 | import meteordevelopment.meteorclient.settings.Setting; 7 | import meteordevelopment.meteorclient.settings.SettingGroup; 8 | import meteordevelopment.meteorclient.systems.modules.Category; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.meteorclient.systems.modules.combat.Criticals; 11 | import nekiplay.meteorplus.MeteorPlusAddon; 12 | import net.minecraft.entity.Entity; 13 | import net.minecraft.entity.EntityType; 14 | import net.minecraft.entity.LivingEntity; 15 | import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; 16 | import org.spongepowered.asm.mixin.Mixin; 17 | import org.spongepowered.asm.mixin.Unique; 18 | import org.spongepowered.asm.mixin.injection.At; 19 | import org.spongepowered.asm.mixin.injection.Inject; 20 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 21 | 22 | import static nekiplay.meteorplus.features.modules.combat.criticals.CriticalsPlus.needCrit; 23 | import static nekiplay.meteorplus.features.modules.combat.criticals.CriticalsPlus.skipCrit; 24 | 25 | @Mixin(value = Criticals.class, remap = false, priority = 1001) 26 | public class CriticalsMixin extends Module { 27 | public CriticalsMixin(Category category, String name, String description) { 28 | super(category, name, description); 29 | } 30 | 31 | @Unique 32 | private final SettingGroup sgMeteorPlus = settings.createGroup(MeteorPlusAddon.HUD_TITLE); 33 | 34 | @Unique 35 | private final Setting noWorkIfItsNotNeed = sgMeteorPlus.add(new BoolSetting.Builder() 36 | .name("Use-crit-only-if-necessary") 37 | .description("Hits with a crit if the enemy's health is less than the normal damage of your weapon.") 38 | .defaultValue(true) 39 | .build() 40 | ); 41 | 42 | @Inject(method = "onSendPacket", at = @At("HEAD"), cancellable = true) 43 | private void onSendPacket(PacketEvent.Send event, CallbackInfo ci) { 44 | if (event.packet instanceof IPlayerInteractEntityC2SPacket packet && packet.meteor$getType() == PlayerInteractEntityC2SPacket.InteractType.ATTACK) { 45 | if (skipCrit()) { ci.cancel(); return; } 46 | 47 | Entity entity = packet.meteor$getEntity(); 48 | if (entity != null) { 49 | if (entity.getType() == EntityType.SHULKER_BULLET || entity.getType() == EntityType.FIREBALL) { 50 | ci.cancel(); 51 | } 52 | else if (entity instanceof LivingEntity livingEntity) { 53 | if (!needCrit(livingEntity) && noWorkIfItsNotNeed.get()) { 54 | ci.cancel(); 55 | } 56 | } 57 | } 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/ESPMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.meteorclient.modules; 2 | 3 | import meteordevelopment.meteorclient.systems.modules.Modules; 4 | import meteordevelopment.meteorclient.systems.modules.render.ESP; 5 | import nekiplay.meteorplus.features.modules.combat.Teams; 6 | import net.minecraft.entity.Entity; 7 | import net.minecraft.entity.player.PlayerEntity; 8 | import nekiplay.meteorplus.features.modules.combat.AntiBotPlus; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 13 | 14 | @Mixin(ESP.class) 15 | public class ESPMixin { 16 | @Inject(method = "shouldSkip", at = @At("RETURN"), cancellable = true) 17 | protected void shouldSkip(Entity entity, CallbackInfoReturnable cir) { 18 | AntiBotPlus antiBotPlus = Modules.get().get(AntiBotPlus.class); 19 | Teams teams = Modules.get().get(Teams.class); 20 | if (antiBotPlus != null && teams != null && !cir.getReturnValue() && entity instanceof PlayerEntity) { 21 | boolean ignore = antiBotPlus.isBot(entity); 22 | if (!ignore) { 23 | ignore = teams.isInYourTeam(entity); 24 | } 25 | cir.setReturnValue(ignore); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/ItemHighlightMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.meteorclient.modules; 2 | 3 | 4 | import meteordevelopment.meteorclient.systems.modules.Modules; 5 | import meteordevelopment.meteorclient.systems.modules.render.ItemHighlight; 6 | import nekiplay.meteorplus.features.modules.render.ItemHighlightPlus; 7 | import nekiplay.meteorplus.settings.items.HiglightItemData; 8 | import net.minecraft.item.ItemStack; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 13 | 14 | @Mixin(value = ItemHighlight.class) 15 | public class ItemHighlightMixin { 16 | @Inject(method = "getColor", at = @At("RETURN"), cancellable = true) 17 | private void getColor(ItemStack stack, CallbackInfoReturnable cir) { 18 | if (cir.getReturnValue() == -1) { 19 | if (stack != null) { 20 | ItemHighlightPlus itemHighlightPlus = Modules.get().get(ItemHighlightPlus.class); 21 | if (itemHighlightPlus != null && itemHighlightPlus.isActive()) { 22 | if (itemHighlightPlus.whitelist.get().contains(stack.getItem().asItem())) { 23 | HiglightItemData espItemData = itemHighlightPlus.itemsConfigs.get().get(stack.getItem()); 24 | if (espItemData != null) { 25 | cir.setReturnValue(espItemData.Color.getPacked()); 26 | } 27 | else { 28 | cir.setReturnValue(itemHighlightPlus.defaultBlockConfig.get().Color.getPacked()); 29 | } 30 | } 31 | } 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/MiddleClickExtraMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.meteorclient.modules; 2 | 3 | 4 | import meteordevelopment.meteorclient.events.meteor.MouseButtonEvent; 5 | import meteordevelopment.meteorclient.settings.BoolSetting; 6 | import meteordevelopment.meteorclient.settings.Setting; 7 | import meteordevelopment.meteorclient.settings.SettingGroup; 8 | import meteordevelopment.meteorclient.systems.modules.Categories; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.meteorclient.systems.modules.player.MiddleClickExtra; 11 | import meteordevelopment.meteorclient.utils.misc.input.KeyAction; 12 | import org.spongepowered.asm.mixin.Final; 13 | import org.spongepowered.asm.mixin.Mixin; 14 | import org.spongepowered.asm.mixin.Shadow; 15 | import org.spongepowered.asm.mixin.Unique; 16 | import org.spongepowered.asm.mixin.injection.At; 17 | import org.spongepowered.asm.mixin.injection.Inject; 18 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 19 | 20 | import static meteordevelopment.meteorclient.MeteorClient.mc; 21 | import static nekiplay.meteorplus.MeteorPlusAddon.HUD_TITLE; 22 | import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_MIDDLE; 23 | 24 | @Mixin(value = MiddleClickExtra.class, remap = false) 25 | public class MiddleClickExtraMixin extends Module { 26 | public MiddleClickExtraMixin() { 27 | super(Categories.Player, "middle-click-extra", "Perform various actions when you middle click."); 28 | } 29 | 30 | @Final 31 | @Shadow 32 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 33 | 34 | 35 | @Unique 36 | private final Setting noInventory = sgGeneral.add(new BoolSetting.Builder() 37 | .name("Anti-inventory") 38 | .description("Not work in inventory.") 39 | .defaultValue(true) 40 | .build() 41 | ); 42 | 43 | @Inject(method = "onMouseButton", at = @At("HEAD"), cancellable = true) 44 | private void onMouseButton(MouseButtonEvent event, CallbackInfo ci) { 45 | if (event.action == KeyAction.Press && event.button == 2 && mc.currentScreen == null) { 46 | if (event.action != KeyAction.Press || event.button != GLFW_MOUSE_BUTTON_MIDDLE) return; 47 | if (noInventory.get() && mc.currentScreen != null) { 48 | ci.cancel(); 49 | } 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/NameTagsMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.meteorclient.modules; 2 | 3 | import meteordevelopment.meteorclient.events.render.Render2DEvent; 4 | import meteordevelopment.meteorclient.systems.modules.Modules; 5 | import meteordevelopment.meteorclient.systems.modules.render.Nametags; 6 | import nekiplay.meteorplus.features.modules.combat.AntiBotPlus; 7 | import nekiplay.meteorplus.features.modules.combat.Teams; 8 | import net.minecraft.entity.player.PlayerEntity; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 13 | 14 | @Mixin(value = Nametags.class) 15 | public class NameTagsMixin { 16 | @Inject(method = "renderNametagPlayer", at = @At("HEAD"), cancellable = true) 17 | private void onRenderNametagPlayer(Render2DEvent event, PlayerEntity player, boolean shadow, CallbackInfo ci) { 18 | AntiBotPlus antiBotPlus = Modules.get().get(AntiBotPlus.class); 19 | Teams teams = Modules.get().get(Teams.class); 20 | if (antiBotPlus != null && teams != null) { 21 | boolean ignore = antiBotPlus.isBot(player); 22 | if (!ignore) { 23 | ignore = teams.isInYourTeam(player); 24 | } 25 | if (ignore) { 26 | ci.cancel(); 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/meteorclient/modules/TracersMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.meteorclient.modules; 2 | 3 | import meteordevelopment.meteorclient.systems.modules.Modules; 4 | import meteordevelopment.meteorclient.systems.modules.render.Tracers; 5 | import nekiplay.meteorplus.features.modules.combat.Teams; 6 | import net.minecraft.entity.Entity; 7 | import net.minecraft.entity.player.PlayerEntity; 8 | import nekiplay.meteorplus.features.modules.combat.AntiBotPlus; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 13 | 14 | @Mixin(Tracers.class) 15 | public class TracersMixin { 16 | @Inject(method = "shouldBeIgnored", at = @At("RETURN"), cancellable = true) 17 | protected void shouldBeIgnored(Entity entity, CallbackInfoReturnable cir) { 18 | AntiBotPlus antiBotPlus = Modules.get().get(AntiBotPlus.class); 19 | Teams teams = Modules.get().get(Teams.class); 20 | if (antiBotPlus != null && teams != null && !cir.getReturnValue() && entity instanceof PlayerEntity) { 21 | boolean ignore = antiBotPlus.isBot(entity); 22 | if (!ignore) { 23 | ignore = teams.isInYourTeam(entity); 24 | } 25 | cir.setReturnValue(ignore); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/meteorclient/utils/misc/KeybindMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.meteorclient.utils.misc; 2 | 3 | import org.spongepowered.asm.mixin.Mixin; 4 | import org.spongepowered.asm.mixin.injection.At; 5 | import org.spongepowered.asm.mixin.injection.Inject; 6 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 7 | 8 | @Mixin(value = meteordevelopment.meteorclient.utils.misc.Keybind.class, remap = false) 9 | public class KeybindMixin { 10 | @Inject(method = "canBindTo", at = @At("HEAD"), cancellable = true) 11 | public void canBind(boolean isKey, int value, int modifers, CallbackInfoReturnable cir) { 12 | cir.setReturnValue(true); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/minecraft/ClientConnectionAccessor.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.minecraft; 2 | 3 | import net.minecraft.network.ClientConnection; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(ClientConnection.class) 8 | public interface ClientConnectionAccessor { 9 | @Accessor("ticks") 10 | int getTicks(); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/minecraft/ClientPlayerInteractionManagerMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.minecraft; 2 | 3 | import meteordevelopment.meteorclient.MeteorClient; 4 | import net.minecraft.client.network.ClientPlayerInteractionManager; 5 | import net.minecraft.entity.player.PlayerEntity; 6 | import net.minecraft.screen.slot.SlotActionType; 7 | import nekiplay.main.events.ClickWindowEvent; 8 | import org.spongepowered.asm.mixin.Mixin; 9 | import org.spongepowered.asm.mixin.injection.At; 10 | import org.spongepowered.asm.mixin.injection.Inject; 11 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 12 | 13 | @Mixin(ClientPlayerInteractionManager.class) 14 | public class ClientPlayerInteractionManagerMixin { 15 | @Inject(method = "clickSlot", at = @At("HEAD"), cancellable = true) 16 | private void windowClick(int syncId, int slotId, int button, SlotActionType actionType, PlayerEntity player, CallbackInfo callbackInfo) { 17 | final ClickWindowEvent event = ClickWindowEvent.get(syncId, slotId, button, actionType); 18 | MeteorClient.EVENT_BUS.post(event); 19 | 20 | if (event.isCancelled()) 21 | callbackInfo.cancel(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/minecraft/ShapelessRecipeAccessor.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.minecraft; 2 | 3 | import net.minecraft.recipe.ShapelessRecipe; 4 | import net.minecraft.recipe.book.CraftingRecipeCategory; 5 | import org.spongepowered.asm.mixin.Mixin; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(ShapelessRecipe.class) 9 | public interface ShapelessRecipeAccessor { 10 | @Accessor("category") 11 | CraftingRecipeCategory getCategory(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/minecraft/StringReaderMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.minecraft; 2 | 3 | import com.mojang.brigadier.StringReader; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.injection.At; 6 | import org.spongepowered.asm.mixin.injection.Inject; 7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; 8 | 9 | @Mixin(StringReader.class) 10 | public class StringReaderMixin { 11 | @Inject(method = "isAllowedInUnquotedString", at = @At("RETURN"), remap = false, cancellable = true) 12 | private static void onIsAllowedInUnquotedString(char c, CallbackInfoReturnable cir) { 13 | cir.setReturnValue( 14 | Character.isLetterOrDigit(c) 15 | || c == '_' || c == '-' 16 | || c == '.' || c == '+' 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/minecraft/entity/ClientPlayerEntityMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.minecraft.entity; 2 | 3 | import meteordevelopment.meteorclient.MeteorClient; 4 | import nekiplay.main.events.PlayerUseMultiplierEvent; 5 | import net.minecraft.client.input.Input; 6 | import net.minecraft.client.network.ClientPlayerEntity; 7 | import net.minecraft.util.math.Vec2f; 8 | import org.spongepowered.asm.mixin.Mixin; 9 | import org.spongepowered.asm.mixin.Shadow; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Inject; 12 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 13 | 14 | @Mixin(value = ClientPlayerEntity.class, priority = 1003) 15 | public abstract class ClientPlayerEntityMixin { 16 | @Shadow 17 | public Input input; 18 | 19 | @Inject(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isUsingItem()Z", ordinal = 0)) 20 | private void hookCustomMultiplier(CallbackInfo ci) { 21 | final Input input = this.input; 22 | 23 | 24 | final PlayerUseMultiplierEvent playerUseMultiplier = new PlayerUseMultiplierEvent(0.2f, 0.2f); 25 | MeteorClient.EVENT_BUS.post(playerUseMultiplier); 26 | if (playerUseMultiplier.getForward() == 0.2f && playerUseMultiplier.getSideways() == 0.2f) { 27 | return; 28 | } 29 | input.movementVector = new Vec2f(input.movementVector.x / 0.2f, input.movementVector.y / 0.2f); 30 | // reverse 31 | input.movementVector = new Vec2f(input.movementVector.x * playerUseMultiplier.getForward(), input.movementVector.y * playerUseMultiplier.getSideways()); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/minecraft/entity/LivingEntityMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.minecraft.entity; 2 | 3 | import com.llamalad7.mixinextras.injector.ModifyReturnValue; 4 | import meteordevelopment.meteorclient.systems.modules.Modules; 5 | import meteordevelopment.meteorclient.systems.modules.movement.elytrafly.ElytraFly; 6 | import nekiplay.meteorplus.features.modules.movement.NoJumpDelay; 7 | import nekiplay.meteorplus.features.modules.movement.elytrafly.ElytraFlyPlus; 8 | import net.minecraft.entity.LivingEntity; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.Shadow; 11 | import org.spongepowered.asm.mixin.injection.At; 12 | import org.spongepowered.asm.mixin.injection.Inject; 13 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 14 | 15 | import static meteordevelopment.meteorclient.MeteorClient.mc; 16 | 17 | @Mixin(value = LivingEntity.class, priority = 1001) 18 | public class LivingEntityMixin { 19 | @Shadow 20 | protected boolean jumping; 21 | 22 | @Shadow 23 | private int jumpingCooldown; 24 | 25 | @Inject(method = "tickMovement", at = @At("HEAD")) 26 | private void hookTickMovement(CallbackInfo ci) { 27 | Modules modules = Modules.get(); 28 | if (modules != null) { 29 | NoJumpDelay noJumpDelay = modules.get(NoJumpDelay.class); 30 | if (noJumpDelay != null) { 31 | if (noJumpDelay.isActive()) { 32 | jumpingCooldown = 0; 33 | } 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/minecraft/entity/PlayerMoveC2SPacketAccessor.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.minecraft.entity; 2 | 3 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.Mutable; 6 | import org.spongepowered.asm.mixin.gen.Accessor; 7 | 8 | @Mixin(PlayerMoveC2SPacket.class) 9 | public interface PlayerMoveC2SPacketAccessor { 10 | @Mutable 11 | @Accessor("y") 12 | void setY(double y); 13 | 14 | @Accessor("y") 15 | double getY(); 16 | 17 | @Mutable 18 | @Accessor("onGround") 19 | void setOnGround(boolean onGround); 20 | 21 | @Accessor("onGround") 22 | boolean getOnGround(); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/minecraft/entity/ShulkerEntityAccessor.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.minecraft.entity; 2 | 3 | import net.minecraft.entity.mob.ShulkerEntity; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Invoker; 6 | 7 | @Mixin(ShulkerEntity.class) 8 | public interface ShulkerEntityAccessor { 9 | @Invoker("getPeekAmount") 10 | int getPeekAmount(); 11 | 12 | @Invoker("isClosed") 13 | boolean isClosed(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/minecraft/hud/DebugHudMixin.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.minecraft.hud; 2 | 3 | import meteordevelopment.meteorclient.MeteorClient; 4 | import nekiplay.main.events.hud.DebugDrawTextEvent; 5 | import net.minecraft.client.MinecraftClient; 6 | import net.minecraft.client.gui.DrawContext; 7 | import net.minecraft.client.gui.hud.DebugHud; 8 | import net.minecraft.util.hit.HitResult; 9 | import org.spongepowered.asm.mixin.Final; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.Shadow; 12 | import org.spongepowered.asm.mixin.injection.At; 13 | import org.spongepowered.asm.mixin.injection.Inject; 14 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 15 | import org.spongepowered.asm.mixin.injection.callback.LocalCapture; 16 | 17 | import java.util.List; 18 | 19 | @Mixin(value = DebugHud.class, priority = 1001) 20 | public class DebugHudMixin { 21 | 22 | @Shadow 23 | private HitResult blockHit; 24 | @Shadow 25 | private HitResult fluidHit; 26 | @Shadow 27 | @Final 28 | private MinecraftClient client; 29 | 30 | @Inject( 31 | method = "drawLeftText", 32 | at = @At( 33 | value = "INVOKE", 34 | target = "Lnet/minecraft/client/gui/hud/DebugHud;drawText(Lnet/minecraft/client/gui/DrawContext;Ljava/util/List;Z)V", 35 | shift = At.Shift.BEFORE 36 | ), 37 | locals = LocalCapture.CAPTURE_FAILHARD 38 | ) 39 | private void modifyDrawLeftText(DrawContext ignored, CallbackInfo ci, List lines) { 40 | DebugDrawTextEvent debugDrawTextEvent = DebugDrawTextEvent.get(lines, true, blockHit, fluidHit); 41 | MeteorClient.EVENT_BUS.post(debugDrawTextEvent); 42 | } 43 | 44 | @Inject( 45 | method = "drawRightText", 46 | at = @At( 47 | value = "INVOKE", 48 | target = "Lnet/minecraft/client/gui/hud/DebugHud;drawText(Lnet/minecraft/client/gui/DrawContext;Ljava/util/List;Z)V", 49 | shift = At.Shift.BEFORE 50 | ), 51 | locals = LocalCapture.CAPTURE_FAILHARD 52 | ) 53 | private void modifyDrawRightText(DrawContext ignored, CallbackInfo ci, List lines) { 54 | DebugDrawTextEvent debugDrawTextEvent = DebugDrawTextEvent.get(lines, false, blockHit, fluidHit); 55 | MeteorClient.EVENT_BUS.post(debugDrawTextEvent); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixin/xaero/worldmap/MapPixelAccessor.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixin.xaero.worldmap; 2 | 3 | import net.minecraft.block.BlockState; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | import xaero.map.region.MapPixel; 7 | 8 | @Mixin(MapPixel.class) 9 | public interface MapPixelAccessor { 10 | @Accessor("state") 11 | BlockState getBlockState(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixinclasses/EditWaypointScreen.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixinclasses; 2 | 3 | import meteordevelopment.meteorclient.gui.GuiTheme; 4 | import meteordevelopment.meteorclient.gui.screens.EditSystemScreen; 5 | import meteordevelopment.meteorclient.settings.Settings; 6 | import meteordevelopment.meteorclient.systems.waypoints.Waypoint; 7 | import meteordevelopment.meteorclient.systems.waypoints.Waypoints; 8 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 9 | 10 | import static meteordevelopment.meteorclient.MeteorClient.mc; 11 | 12 | public class EditWaypointScreen extends EditSystemScreen { 13 | private Runnable reload; 14 | public EditWaypointScreen(GuiTheme theme, Waypoint value, Runnable reload) { 15 | super(theme, value, reload); 16 | this.reload = reload; 17 | } 18 | 19 | @Override 20 | public Waypoint create() { 21 | return new Waypoint.Builder() 22 | .pos(mc.player.getBlockPos().up(2)) 23 | .dimension(PlayerUtils.getDimension()) 24 | .build(); 25 | } 26 | 27 | @Override 28 | public boolean save() { 29 | 30 | boolean added = !isNew || Waypoints.get().add(value); 31 | return added; 32 | 33 | } 34 | 35 | @Override 36 | public Settings getSettings() { 37 | return value.settings; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixinclasses/IModule.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixinclasses; 2 | 3 | public interface IModule { 4 | boolean isHidden(); 5 | void setHidden(boolean value); 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixinclasses/SpoofMode.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixinclasses; 2 | 3 | public enum SpoofMode { 4 | Sensor, 5 | Fake, 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixinclasses/WIcon.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixinclasses; 2 | 3 | import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; 4 | import meteordevelopment.meteorclient.gui.widgets.WWidget; 5 | import meteordevelopment.meteorclient.systems.waypoints.Waypoint; 6 | 7 | public class WIcon extends WWidget { 8 | private final Waypoint waypoint; 9 | 10 | public WIcon(Waypoint waypoint) { 11 | this.waypoint = waypoint; 12 | } 13 | 14 | @Override 15 | protected void onCalculateSize() { 16 | double s = theme.scale(32); 17 | 18 | width = s; 19 | height = s; 20 | } 21 | 22 | @Override 23 | protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, double delta) { 24 | renderer.post(() -> waypoint.renderIcon(x, y, 1, width)); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/mixinclasses/WaypointsModuleModes.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.mixinclasses; 2 | 3 | import meteordevelopment.meteorclient.systems.waypoints.Waypoint; 4 | 5 | import java.util.Comparator; 6 | import java.util.Map; 7 | 8 | import static meteordevelopment.meteorclient.MeteorClient.mc; 9 | 10 | public class WaypointsModuleModes { 11 | public enum SortMode { 12 | None, 13 | Distance, 14 | Name, 15 | } 16 | 17 | public static class DistanceComparator implements Comparator { 18 | Map base; 19 | 20 | public DistanceComparator(Map base) { 21 | this.base = base; 22 | } 23 | public int compare(String a, String b) { 24 | long distance1 = 0; 25 | long distance2 = 0; 26 | if (mc.player != null) { 27 | Waypoint awp = base.get(a); 28 | Waypoint bwp = base.get(b); 29 | if (awp != null && bwp != null) { 30 | if (awp.getPos() != null && bwp.getPos() != null) { 31 | 32 | distance1 = Math.round(mc.player.getPos().distanceTo(awp.getPos().toCenterPos())); 33 | distance2 = Math.round(mc.player.getPos().distanceTo(bwp.getPos().toCenterPos())); 34 | } 35 | } 36 | } 37 | if (distance1 >= distance2) { 38 | return 1; 39 | } else { 40 | return -1; 41 | } 42 | } 43 | } 44 | 45 | public static class NameComparator implements Comparator { 46 | Map base; 47 | 48 | public NameComparator(Map base) { 49 | this.base = base; 50 | } 51 | public int compare(String a, String b) { 52 | if (base.containsKey(a) && base.containsKey(b)) { 53 | 54 | Waypoint awp = base.get(a); 55 | Waypoint bwp = base.get(b); 56 | if (awp != null && bwp != null) { 57 | if (awp.name.get().length() >= bwp.name.get().length()) { 58 | return 1; 59 | } else { 60 | return -1; 61 | } 62 | } 63 | return 0; 64 | } 65 | else { 66 | return 0; 67 | } 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/settings/MeteorPlusSettings.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.settings; 2 | 3 | import meteordevelopment.meteorclient.gui.GuiTheme; 4 | import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; 5 | import meteordevelopment.meteorclient.gui.utils.SettingsWidgetFactory; 6 | import meteordevelopment.meteorclient.gui.widgets.containers.WTable; 7 | import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; 8 | import nekiplay.meteorplus.settings.items.ItemDataSetting; 9 | import nekiplay.meteorplus.settings.items.ItemDataSettingScreen; 10 | 11 | import java.util.Map; 12 | 13 | import static meteordevelopment.meteorclient.MeteorClient.mc; 14 | 15 | public class MeteorPlusSettings { 16 | private final Map, SettingsWidgetFactory.Factory> factories; 17 | 18 | private final GuiTheme theme; 19 | 20 | public MeteorPlusSettings(Map, SettingsWidgetFactory.Factory> factories, GuiTheme theme) { 21 | this.factories = factories; 22 | this.theme = theme; 23 | } 24 | 25 | public void addSettings() { 26 | factories.put(ItemDataSetting.class, (table, setting) -> stringMapW(table, (ItemDataSetting) setting)); 27 | } 28 | 29 | 30 | private void stringMapW(WTable table, ItemDataSetting setting) { 31 | WButton button = table.add(theme.button(GuiRenderer.EDIT)).expandCellX().widget(); 32 | button.action = () -> mc.setScreen(new ItemDataSettingScreen(theme, setting)); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/settings/items/HiglightItemData.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.settings.items; 2 | 3 | import meteordevelopment.meteorclient.gui.GuiTheme; 4 | import meteordevelopment.meteorclient.gui.WidgetScreen; 5 | import meteordevelopment.meteorclient.gui.utils.IScreenFactory; 6 | import meteordevelopment.meteorclient.renderer.ShapeMode; 7 | import meteordevelopment.meteorclient.utils.misc.IChangeable; 8 | import meteordevelopment.meteorclient.utils.misc.ICopyable; 9 | import meteordevelopment.meteorclient.utils.misc.ISerializable; 10 | import meteordevelopment.meteorclient.utils.render.color.SettingColor; 11 | import net.minecraft.item.Item; 12 | import net.minecraft.nbt.NbtCompound; 13 | 14 | public class HiglightItemData implements ICopyable, ISerializable, IChangeable, IItemData, IScreenFactory { 15 | public SettingColor Color; 16 | private boolean changed; 17 | 18 | public HiglightItemData(SettingColor color) { 19 | this.Color = color; 20 | } 21 | 22 | @Override 23 | public WidgetScreen createScreen(GuiTheme theme, Item block, ItemDataSetting setting) { 24 | return new HiglightItemDataScren(theme, this, block, setting); 25 | } 26 | 27 | @Override 28 | public WidgetScreen createScreen(GuiTheme theme) { 29 | return new HiglightItemDataScren(theme, this, null, null); 30 | } 31 | 32 | @Override 33 | public boolean isChanged() { 34 | return changed; 35 | } 36 | 37 | public void changed() { 38 | changed = true; 39 | } 40 | 41 | public void tickRainbow() { 42 | Color.update(); 43 | } 44 | 45 | @Override 46 | public HiglightItemData set(HiglightItemData value) { 47 | Color.set(value.Color); 48 | changed = value.changed; 49 | 50 | return this; 51 | } 52 | 53 | @Override 54 | public HiglightItemData copy() { 55 | return new HiglightItemData(new SettingColor(Color)); 56 | } 57 | 58 | @Override 59 | public NbtCompound toTag() { 60 | NbtCompound tag = new NbtCompound(); 61 | 62 | tag.put("color", Color.toTag()); 63 | tag.putBoolean("changed", changed); 64 | 65 | return tag; 66 | } 67 | 68 | @Override 69 | public HiglightItemData fromTag(NbtCompound tag) { 70 | Color.fromTag(tag.getCompound("color").get()); 71 | changed = tag.getBoolean("changed").get(); 72 | 73 | return this; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/settings/items/HiglightItemDataScren.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.settings.items; 2 | 3 | import meteordevelopment.meteorclient.gui.GuiTheme; 4 | import meteordevelopment.meteorclient.gui.WindowScreen; 5 | import meteordevelopment.meteorclient.renderer.ShapeMode; 6 | import meteordevelopment.meteorclient.settings.*; 7 | import meteordevelopment.meteorclient.utils.render.color.SettingColor; 8 | import net.minecraft.item.Item; 9 | 10 | public class HiglightItemDataScren extends WindowScreen { 11 | private final HiglightItemData blockData; 12 | private final Item block; 13 | private final ItemDataSetting setting; 14 | 15 | public HiglightItemDataScren(GuiTheme theme, HiglightItemData blockData, Item block, ItemDataSetting setting) { 16 | super(theme, "Configure Items"); 17 | 18 | this.blockData = blockData; 19 | this.block = block; 20 | this.setting = setting; 21 | } 22 | 23 | @Override 24 | public void initWidgets() { 25 | Settings settings = new Settings(); 26 | SettingGroup sgGeneral = settings.getDefaultGroup(); 27 | 28 | sgGeneral.add(new ColorSetting.Builder() 29 | .name("color") 30 | .description("Color of item.") 31 | .defaultValue(new SettingColor(0, 255, 200)) 32 | .onModuleActivated(settingColorSetting -> settingColorSetting.set(blockData.Color)) 33 | .onChanged(settingColor -> { 34 | blockData.Color.set(settingColor); 35 | changed(blockData, block, setting); 36 | }) 37 | .build() 38 | ); 39 | 40 | settings.onActivated(); 41 | add(theme.settings(settings)).expandX(); 42 | } 43 | 44 | private void changed(HiglightItemData blockData, Item block, ItemDataSetting setting) { 45 | if (!blockData.isChanged() && block != null && setting != null) { 46 | setting.get().put(block, blockData); 47 | setting.onChanged(); 48 | } 49 | 50 | blockData.changed(); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/settings/items/IItemData.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.settings.items; 2 | 3 | import meteordevelopment.meteorclient.gui.GuiTheme; 4 | import meteordevelopment.meteorclient.gui.WidgetScreen; 5 | import meteordevelopment.meteorclient.utils.misc.IChangeable; 6 | import meteordevelopment.meteorclient.utils.misc.ICopyable; 7 | import meteordevelopment.meteorclient.utils.misc.ISerializable; 8 | import net.minecraft.item.Item; 9 | 10 | public interface IItemData & ISerializable & IChangeable & IItemData> { 11 | WidgetScreen createScreen(GuiTheme theme, Item block, ItemDataSetting setting); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/settings/items/ItemDataSetting.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.settings.items; 2 | 3 | import meteordevelopment.meteorclient.settings.IVisible; 4 | import meteordevelopment.meteorclient.settings.Setting; 5 | import meteordevelopment.meteorclient.utils.misc.IChangeable; 6 | import meteordevelopment.meteorclient.utils.misc.ICopyable; 7 | import meteordevelopment.meteorclient.utils.misc.IGetter; 8 | import meteordevelopment.meteorclient.utils.misc.ISerializable; 9 | import net.minecraft.item.Item; 10 | import net.minecraft.nbt.NbtCompound; 11 | import net.minecraft.registry.Registries; 12 | import net.minecraft.util.Identifier; 13 | 14 | import java.util.HashMap; 15 | import java.util.Map; 16 | import java.util.function.Consumer; 17 | 18 | public class ItemDataSetting & ISerializable & IChangeable & IItemData> extends Setting> { 19 | public final IGetter defaultData; 20 | 21 | public ItemDataSetting(String name, String description, Map defaultValue, Consumer> onChanged, Consumer>> onModuleActivated, IGetter defaultData, IVisible visible) { 22 | super(name, description, defaultValue, onChanged, onModuleActivated, visible); 23 | 24 | this.defaultData = defaultData; 25 | } 26 | 27 | @Override 28 | public void resetImpl() { 29 | value = new HashMap<>(defaultValue); 30 | } 31 | 32 | @Override 33 | protected Map parseImpl(String str) { 34 | return new HashMap<>(0); 35 | } 36 | 37 | @Override 38 | protected boolean isValueValid(Map value) { 39 | return true; 40 | } 41 | 42 | @Override 43 | protected NbtCompound save(NbtCompound tag) { 44 | NbtCompound valueTag = new NbtCompound(); 45 | for (Item block : get().keySet()) { 46 | valueTag.put(Registries.ITEM.getId(block).toString(), get().get(block).toTag()); 47 | } 48 | tag.put("value", valueTag); 49 | 50 | return tag; 51 | } 52 | 53 | @Override 54 | protected Map load(NbtCompound tag) { 55 | get().clear(); 56 | 57 | NbtCompound valueTag = tag.getCompound("value").get(); 58 | for (String key : valueTag.getKeys()) { 59 | get().put(Registries.ITEM.get(Identifier.of(key)), defaultData.get().copy().fromTag(valueTag.getCompound(key).get())); 60 | } 61 | 62 | return get(); 63 | } 64 | 65 | public static class Builder & ISerializable & IChangeable & IItemData> extends SettingBuilder, Map, ItemDataSetting> { 66 | private IGetter defaultData; 67 | 68 | public Builder() { 69 | super(new HashMap<>(0)); 70 | } 71 | 72 | public Builder defaultData(IGetter defaultData) { 73 | this.defaultData = defaultData; 74 | return this; 75 | } 76 | 77 | @Override 78 | public ItemDataSetting build() { 79 | return new ItemDataSetting<>(name, description, defaultValue, onChanged, onModuleActivated, defaultData, visible); 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/ColorRemover.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils; 2 | 3 | public class ColorRemover { 4 | public static String GetVerbatim(String text) 5 | { 6 | int idx = 0; 7 | var data = new char[text.length()]; 8 | 9 | for ( int i = 0; i < text.length(); i++ ) 10 | if ( text.charAt(i) != '§' && text.charAt(i) != '&') 11 | data[idx++] = text.charAt(i); 12 | else 13 | i++; 14 | 15 | return new String(data, 0, idx); 16 | } 17 | public static String GetVerbatimAll(String text) 18 | { 19 | int idx = 0; 20 | var data = new char[text.length()]; 21 | 22 | for ( int i = 0; i < text.length(); i++ ) 23 | if ( text.charAt(i) != '§' && text.charAt(i) != '&' ) 24 | data[idx++] = text.charAt(i); 25 | else 26 | i++; 27 | 28 | return new String(data, 0, idx); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/CustomSpeedUtils.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils; 2 | 3 | import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent; 4 | import meteordevelopment.meteorclient.mixininterface.IVec3d; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import meteordevelopment.meteorclient.systems.modules.movement.Anchor; 7 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 8 | import net.minecraft.entity.effect.StatusEffects; 9 | import net.minecraft.util.math.Vec3d; 10 | 11 | import static meteordevelopment.meteorclient.MeteorClient.mc; 12 | 13 | public class CustomSpeedUtils { 14 | public static void applySpeed(PlayerMoveEvent event, double speed) { 15 | Vec3d vel = PlayerUtils.getHorizontalVelocity(speed); 16 | double velX = vel.getX(); 17 | double velZ = vel.getZ(); 18 | 19 | if (mc.player.hasStatusEffect(StatusEffects.SPEED)) { 20 | double value = (mc.player.getStatusEffect(StatusEffects.SPEED).getAmplifier() + 1) * 0.205; 21 | velX += velX * value; 22 | velZ += velZ * value; 23 | } 24 | 25 | Anchor anchor = Modules.get().get(Anchor.class); 26 | if (anchor.isActive() && anchor.controlMovement) { 27 | velX = anchor.deltaX; 28 | velZ = anchor.deltaZ; 29 | } 30 | 31 | ((IVec3d) event.movement).meteor$set(velX, event.movement.y, velZ); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/ElytraUtils.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils; 2 | 3 | import net.minecraft.client.MinecraftClient; 4 | import net.minecraft.network.packet.c2s.play.ClientCommandC2SPacket; 5 | import net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket; 6 | 7 | import static meteordevelopment.meteorclient.MeteorClient.mc; 8 | 9 | public class ElytraUtils { 10 | public static void startFly() { 11 | if (mc.player != null && mc.player.networkHandler != null) { 12 | mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_FALL_FLYING)); 13 | } 14 | } 15 | 16 | public static void fakeInventoryOpen(boolean open) { 17 | if (mc.player != null && mc.player.networkHandler != null) { 18 | if (open) 19 | mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.OPEN_INVENTORY)); 20 | else 21 | mc.player.networkHandler.sendPacket(new CloseHandledScreenC2SPacket(0)); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/GameSensitivityUtils.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils; 2 | 3 | import net.minecraft.client.MinecraftClient; 4 | 5 | import static meteordevelopment.meteorclient.MeteorClient.mc; 6 | 7 | public class GameSensitivityUtils { 8 | public static float getSensitivity(float rot) { 9 | return getDeltaMouse(rot) * getGCDValue(); 10 | } 11 | 12 | public static float getGCDValue() { 13 | return (float) (getGCD() * 0.15); 14 | } 15 | 16 | public static float getGCD() { 17 | float f1; 18 | return (f1 = (float) (mc.options.getMouseSensitivity().getValue() * 0.6 + 0.2)) * f1 * f1 * 8; 19 | } 20 | 21 | public static float getDeltaMouse(float delta) { 22 | return Math.round(delta / getGCDValue()); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/GenerationBlock.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils; 2 | 3 | import meteordevelopment.meteorclient.utils.world.Dimension; 4 | import net.minecraft.block.Block; 5 | import net.minecraft.block.Blocks; 6 | 7 | public class GenerationBlock { 8 | public int min_height; 9 | public int max_height; 10 | 11 | public Dimension dimension; 12 | 13 | public Block block; 14 | 15 | public GenerationBlock(Block block, Dimension dimension, int min_height, int max_height) { 16 | this.block = block; 17 | this.min_height = min_height; 18 | this.max_height = max_height; 19 | this.dimension = dimension; 20 | } 21 | 22 | public static GenerationBlock getGenerationBlock(Block block, boolean newGeneration) { 23 | if (block == Blocks.ANCIENT_DEBRIS) { 24 | return new GenerationBlock(block, Dimension.Nether, 8, 22); 25 | } 26 | else if (block == Blocks.DIAMOND_ORE || block == Blocks.DEEPSLATE_DIAMOND_ORE) { 27 | if (newGeneration) { 28 | return new GenerationBlock(block, Dimension.Overworld, -64, 15); 29 | } 30 | else { 31 | return new GenerationBlock(block, Dimension.Overworld, 1, 15); 32 | } 33 | } 34 | else if (block == Blocks.GOLD_ORE || block == Blocks.DEEPSLATE_GOLD_ORE) { 35 | if (newGeneration) { 36 | return new GenerationBlock(block, Dimension.Overworld, -16, 112); 37 | } 38 | else { 39 | return new GenerationBlock(block, Dimension.Overworld, 1, 32); 40 | } 41 | } 42 | else if (block == Blocks.IRON_ORE || block == Blocks.DEEPSLATE_IRON_ORE) { 43 | if (newGeneration) { 44 | return new GenerationBlock(block, Dimension.Overworld, -16, 48); 45 | } 46 | else { 47 | return new GenerationBlock(block, Dimension.Overworld, 1, 63 ); 48 | } 49 | } 50 | else if (block == Blocks.LAPIS_ORE || block == Blocks.DEEPSLATE_LAPIS_ORE) { 51 | if (newGeneration) { 52 | return new GenerationBlock(block, Dimension.Overworld, -64, 64); 53 | } 54 | else { 55 | return new GenerationBlock(block, Dimension.Overworld, 1, 31); 56 | } 57 | } 58 | else if (block == Blocks.REDSTONE_ORE || block == Blocks.DEEPSLATE_REDSTONE_ORE) { 59 | if (newGeneration) { 60 | return new GenerationBlock(block, Dimension.Overworld, -64, 8); 61 | } 62 | else { 63 | return new GenerationBlock(block, Dimension.Overworld, 1, 15); 64 | } 65 | } 66 | else if (block == Blocks.COAL_ORE || block == Blocks.DEEPSLATE_COAL_ORE) { 67 | if (newGeneration) { 68 | return new GenerationBlock(block, Dimension.Overworld, 0, 80); 69 | } 70 | else { 71 | return new GenerationBlock(block, Dimension.Overworld, 1, 114); 72 | } 73 | } 74 | return null; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/MovementUtils.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils; 2 | 3 | import static meteordevelopment.meteorclient.MeteorClient.mc; 4 | 5 | public class MovementUtils { 6 | public static double getSpeed() { 7 | return Math.sqrt(mc.player.getVelocity().x * mc.player.getVelocity().x + mc.player.getVelocity().z * mc.player.getVelocity().z); 8 | } 9 | public static void strafe(float speed) { 10 | strafe((double)speed); 11 | } 12 | public static void strafe(double speed) { 13 | double yaw = direction(); 14 | double sin = -Math.sin(yaw) * speed; 15 | double cos = Math.cos(yaw) * speed; 16 | mc.player.getVelocity().add(cos, 0, sin); 17 | } 18 | public static double direction() { 19 | float yaw = mc.player.getYaw(); 20 | if (mc.player.input.getMovementInput().x < 0) yaw += 180; 21 | float forward = 1; 22 | if (mc.player.input.getMovementInput().x < 0) forward -= 0.5; else if (mc.player.input.getMovementInput().x > 0) forward += 0.5; 23 | if (mc.player.input.getMovementInput().y > 0) yaw -= 90 * forward; 24 | if (mc.player.input.getMovementInput().y < 0) yaw += 90 * forward; 25 | return Math.toRadians(yaw); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/NumeralUtils.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils; 2 | 3 | public class NumeralUtils { 4 | public static String FormatNumber(long count) { 5 | if (count < 1000) return "" + count; 6 | int exp = (int) (Math.log(count) / Math.log(1000)); 7 | return String.format("%.1f %c", count / Math.pow(1000, exp),"kMGTPE".charAt(exp-1)); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/RandomString.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils; 2 | 3 | import java.security.SecureRandom; 4 | import java.util.Locale; 5 | import java.util.Objects; 6 | import java.util.Random; 7 | 8 | public class RandomString { 9 | 10 | /** 11 | * Generate a random string. 12 | */ 13 | public String nextString() { 14 | for (int idx = 0; idx < buf.length; ++idx) 15 | buf[idx] = symbols[random.nextInt(symbols.length)]; 16 | return new String(buf); 17 | } 18 | 19 | public static final String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 20 | 21 | public static final String lower = upper.toLowerCase(Locale.ROOT); 22 | 23 | public static final String digits = "0123456789"; 24 | 25 | public static final String alphanum = upper + lower + digits; 26 | 27 | private final Random random; 28 | 29 | private final char[] symbols; 30 | 31 | private final char[] buf; 32 | 33 | public RandomString(int length, Random random, String symbols) { 34 | if (length < 1) throw new IllegalArgumentException(); 35 | if (symbols.length() < 2) throw new IllegalArgumentException(); 36 | this.random = Objects.requireNonNull(random); 37 | this.symbols = symbols.toCharArray(); 38 | this.buf = new char[length]; 39 | } 40 | 41 | /** 42 | * Create an alphanumeric string generator. 43 | */ 44 | public RandomString(int length, Random random) { 45 | this(length, random, alphanum); 46 | } 47 | 48 | /** 49 | * Create an alphanumeric strings from a secure generator. 50 | */ 51 | public RandomString(int length) { 52 | this(length, new SecureRandom()); 53 | } 54 | 55 | /** 56 | * Create session identifiers. 57 | */ 58 | public RandomString() { 59 | this(21); 60 | } 61 | 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/TickTimer.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils; 2 | 3 | import nekiplay.meteorplus.mixin.minecraft.ClientConnectionAccessor; 4 | 5 | import static meteordevelopment.meteorclient.MeteorClient.mc; 6 | 7 | public class TickTimer { 8 | private int ticksBegin = ticks(); 9 | private double delay; 10 | 11 | public TickTimer(double delay){ 12 | this.delay = delay; 13 | } 14 | 15 | public void reset(double delay){ 16 | this.delay = delay; 17 | this.ticksBegin = ticks(); 18 | } 19 | 20 | public boolean elapsed(double newDelay){ 21 | int currentTicks = ticks(); 22 | 23 | if (currentTicks == -1 || ticksBegin == -1 || 24 | (1000.0/20.0)*(currentTicks - ticksBegin) >= delay 25 | ){ 26 | reset(newDelay); 27 | return true; 28 | } 29 | 30 | return false; 31 | } 32 | 33 | public boolean elapsed(){ 34 | return elapsed(delay); 35 | } 36 | 37 | private static int ticks() { 38 | var handler = mc.getNetworkHandler(); 39 | if (handler == null) return -1; 40 | 41 | return ((ClientConnectionAccessor)handler.getConnection()).getTicks(); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/algoritms/PerlinNoice.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils.algoritms; 2 | 3 | import nekiplay.meteorplus.utils.Perlin2D; 4 | 5 | import java.util.Random; 6 | 7 | public class PerlinNoice { 8 | public static int PerlinNoice(int multiply) { 9 | Perlin2D perlin = new Perlin2D(new Random().nextInt()); 10 | float Phi = 0.70710678118f; 11 | float noice = perlin.Noise(5, 5) + perlin.Noise((25 - 25) * Phi, (25 + 25) * Phi) * -1; 12 | return (int) (noice * multiply); 13 | } 14 | public static int PerlinNoice(double multiply) { 15 | Perlin2D perlin = new Perlin2D(new Random().nextInt()); 16 | float Phi = 0.70710678118f; 17 | float noice = perlin.Noise(5, 5) + perlin.Noise((25 - 25) * Phi, (25 + 25) * Phi) * -1; 18 | return (int) (noice * multiply); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/algoritms/RandomUtils.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils.algoritms; 2 | 3 | import java.util.concurrent.ThreadLocalRandom; 4 | 5 | public class RandomUtils { 6 | public static float nextFloat(float min, float max) { 7 | if (max <= min) return max; 8 | else return ThreadLocalRandom.current().nextFloat(min, max); 9 | } 10 | public static int nextInt(int min, int max) { 11 | if (max <= min) return max; 12 | else return ThreadLocalRandom.current().nextInt(min, max); 13 | } 14 | public static double nextDouble(double min, double max) { 15 | if (max <= min) return max; 16 | else return ThreadLocalRandom.current().nextDouble(min, max); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/algoritms/Smooth.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils.algoritms; 2 | 3 | public class Smooth { 4 | public static double getDouble(SmoothType type, double diffAngle, double minRotation, double maxRotation) { 5 | double speeds = 180; 6 | if (type == SmoothType.Linear) { 7 | speeds = (diffAngle / 180 * maxRotation + (1 - diffAngle / 180) * minRotation); 8 | } else if (type == SmoothType.Quad) { 9 | speeds = Math.pow((diffAngle / 180), 2.0) * maxRotation + (1 - Math.pow((diffAngle / 180), 2.0)) * minRotation; 10 | } else if (type == SmoothType.Sine || type == SmoothType.QuadSine) { 11 | final double v = -Math.cos(diffAngle / 180 * Math.PI) * 0.5 + 0.5; 12 | if (type == SmoothType.Sine) { 13 | speeds = v * maxRotation + (Math.cos((diffAngle / 180 * Math.PI) * 0.5 + 0.5) * 0.5 + 0.5) * minRotation; 14 | } else { 15 | speeds = Math.pow(v, 2.0) * maxRotation + (1 - Math.pow(v, 2.0)) * minRotation; 16 | } 17 | } 18 | else if (type == SmoothType.Perlin) { 19 | int noice = PerlinNoice.PerlinNoice(maxRotation); 20 | if (noice > 0) { 21 | speeds = noice; 22 | } 23 | else { 24 | speeds = maxRotation; 25 | } 26 | } 27 | else if (type == SmoothType.PerlinRandom) { 28 | double random = RandomUtils.nextDouble(minRotation, maxRotation); 29 | int noice = PerlinNoice.PerlinNoice(random); 30 | if (noice > 0) { 31 | speeds = noice; 32 | } 33 | else { 34 | speeds = random; 35 | } 36 | } 37 | return speeds; 38 | } 39 | 40 | public enum SmoothType { 41 | None, 42 | Linear, 43 | Quad, 44 | Sine, 45 | QuadSine, 46 | Perlin, 47 | PerlinRandom, 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/nekiplay/meteorplus/utils/math/StopWatch.java: -------------------------------------------------------------------------------- 1 | package nekiplay.meteorplus.utils.math; 2 | 3 | public class StopWatch { 4 | public long lastMS = System.currentTimeMillis(); 5 | public void reset() { 6 | lastMS = System.currentTimeMillis(); 7 | } 8 | public boolean isReached(long time) { 9 | return System.currentTimeMillis() - lastMS > time; 10 | } 11 | public void setLastMS(long newValue) { 12 | lastMS = System.currentTimeMillis() + newValue; 13 | } 14 | public void setTime(long time) { 15 | lastMS = time; 16 | } 17 | 18 | public long getTime() { 19 | return System.currentTimeMillis() - lastMS; 20 | } 21 | public boolean isRunning() { 22 | return System.currentTimeMillis() - lastMS <= 0; 23 | } 24 | public boolean hasTimeElapsed() { 25 | return lastMS < System.currentTimeMillis(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/chat/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/src/main/resources/assets/meteorplus/chat/icon.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/src/main/resources/assets/meteorplus/icon.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/items/diamond.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "model", 4 | "model": "meteorplus:item/diamond" 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/items/logo.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "model", 4 | "model": "meteorplus:item/logo" 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/items/logo_mods.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "model", 4 | "model": "meteorplus:item/logo_mods" 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/items/money.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "model", 4 | "model": "meteorplus:item/money" 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/items/star.json: -------------------------------------------------------------------------------- 1 | { 2 | "model": { 3 | "type": "model", 4 | "model": "meteorplus:item/star" 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/lang/de_de.json: -------------------------------------------------------------------------------- 1 | { 2 | "gui.world_map.baritone_goal_here": "Baritone das ziel hier", 3 | "gui.world_map.baritone_path_here": "Baritone der weg ist hier", 4 | "gui.world_map.baritone_elytra_here": "Baritone elitra ist hier", 5 | "gui.world_map.look_at_waypoint": "Siehe den tag", 6 | 7 | "item.meteorplus.logo": "Meteor+ logo", 8 | "item.meteorplus.logo_mods": "Meteor+ Integrations logo", 9 | 10 | "modules.meteor-client.better-tooltips.beehive.honey-level": "§7Niveau des honigs: §e%d§7.", 11 | "modules.meteor-client.better-tooltips.beehive.bees": "§7Bienen: §e%d§7.", 12 | 13 | "modules.meteor-client.better-tooltips.kilobytes": "§7%s kb", 14 | "modules.meteor-client.better-tooltips.bytes": "§7%s byte", 15 | "modules.meteor-client.better-tooltips.error-getting-bytes": "§cFehler beim empfang von Bytes.", 16 | 17 | "modules.meteor-client.better-tooltips.unknown-inventory": "§4Unbekanntes inventar", 18 | 19 | "modules.meteor-client.better-tooltips.hold-to-preview": "УFür eine vorschau §e%s§r gedrückt halten", 20 | 21 | "modules.meteor-client.inventory-tweaks.dump": "Falten", 22 | "modules.meteor-client.inventory-tweaks.steal": "Nehmen" 23 | } 24 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/lang/en_us.json: -------------------------------------------------------------------------------- 1 | { 2 | "gui.world_map.baritone_goal_here": "Baritone goal Here", 3 | "gui.world_map.baritone_path_here": "Baritone path Here", 4 | "gui.world_map.baritone_elytra_here": "Baritone elytra Here", 5 | "gui.world_map.look_at_waypoint": "Look at waypoint", 6 | 7 | "item.meteorplus.logo": "Meteor+ logo", 8 | "item.meteorplus.logo_mods": "Meteor+ Integrations logo", 9 | "item.meteorplus.star": "Star", 10 | "item.meteorplus.diamond": "Diamond", 11 | "item.meteorplus.money": "Money", 12 | 13 | "modules.meteor-client.better-tooltips.beehive.honey-level": "§7Honey level: §e%d§7.", 14 | "modules.meteor-client.better-tooltips.beehive.bees": "§7Bees: §e%d§7.", 15 | 16 | "modules.meteor-client.better-tooltips.kilobytes": "§7%s kb", 17 | "modules.meteor-client.better-tooltips.bytes": "§7%s bytes", 18 | "modules.meteor-client.better-tooltips.error-getting-bytes": "§cError getting bytes.", 19 | 20 | "modules.meteor-client.better-tooltips.unknown-inventory": "§4Unknown inventory", 21 | 22 | "modules.meteor-client.better-tooltips.hold-to-preview": "Hold §e%s§r to preview", 23 | 24 | "modules.meteor-client.inventory-tweaks.dump": "Dump", 25 | "modules.meteor-client.inventory-tweaks.steal": "Steal" 26 | } 27 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/lang/ru_ru.json: -------------------------------------------------------------------------------- 1 | { 2 | "gui.world_map.baritone_goal_here": "Baritone цель тут", 3 | "gui.world_map.baritone_path_here": "Baritone путь тут", 4 | "gui.world_map.baritone_elytra_here": "Baritone элитра тут", 5 | "gui.world_map.look_at_waypoint": "Смотреть на метку", 6 | 7 | "item.meteorplus.logo": "Meteor+ логотип", 8 | "item.meteorplus.logo_mods": "Meteor+ Integrations логотип", 9 | "item.meteorplus.star": "Звезда", 10 | "item.meteorplus.diamond": "Алмаз", 11 | "item.meteorplus.money": "Деньги", 12 | 13 | "modules.meteor-client.better-tooltips.beehive.honey-level": "§7Уровень мёда: §e%d§7.", 14 | "modules.meteor-client.better-tooltips.beehive.bees": "§7Пчел: §e%d§7.", 15 | 16 | "modules.meteor-client.better-tooltips.kilobytes": "§7%s кб", 17 | "modules.meteor-client.better-tooltips.bytes": "§7%s байт", 18 | "modules.meteor-client.better-tooltips.error-getting-bytes": "§cОшибка при получении байтов.", 19 | 20 | "modules.meteor-client.better-tooltips.unknown-inventory": "§4Неизвестный инвентарь", 21 | 22 | "modules.meteor-client.better-tooltips.hold-to-preview": "Удерживайте §e%s§r для предпросмотра", 23 | 24 | "modules.meteor-client.inventory-tweaks.dump": "Сложить", 25 | "modules.meteor-client.inventory-tweaks.steal": "Взять" 26 | } 27 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/lang/uk_ua.json: -------------------------------------------------------------------------------- 1 | { 2 | "gui.world_map.baritone_goal_here": "Baritone мета тут", 3 | "gui.world_map.baritone_path_here": "Baritone путь тут", 4 | "gui.world_map.baritone_elytra_here": "Baritone елітра тут", 5 | "gui.world_map.look_at_waypoint": "Дивитися на мітку", 6 | 7 | "item.meteorplus.logo": "Meteor+ логотип", 8 | "item.meteorplus.logo_mods": "Meteor+ Integrations логотип", 9 | "item.meteorplus.star": "Зірка", 10 | "item.meteorplus.diamond": "Діамант", 11 | "item.meteorplus.money": "Гроші", 12 | 13 | "modules.meteor-client.better-tooltips.beehive.honey-level": "§7Рівень меду: §e%d§7.", 14 | "modules.meteor-client.better-tooltips.beehive.bees": "§7Бджіл: §e%d§7.", 15 | 16 | "modules.meteor-client.better-tooltips.kilobytes": "§7%s кб", 17 | "modules.meteor-client.better-tooltips.bytes": "§7%s байт", 18 | "modules.meteor-client.better-tooltips.error-getting-bytes": "§cПомилка при отриманні байтів.", 19 | 20 | "modules.meteor-client.better-tooltips.unknown-inventory": "§4Невідомий інвентар", 21 | 22 | "modules.meteor-client.better-tooltips.hold-to-preview": "Утримуйте §e%s§r для перегляду", 23 | 24 | "modules.meteor-client.inventory-tweaks.dump": "Скласти", 25 | "modules.meteor-client.inventory-tweaks.steal": "Взяти" 26 | } 27 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/lang/zh_cn.json: -------------------------------------------------------------------------------- 1 | { 2 | "gui.world_map.baritone_goal_here": "Baritone 目标标记", 3 | "gui.world_map.baritone_path_here": "Baritone 路径标记", 4 | "gui.world_map.baritone_elytra_here": "Baritone 鞘翅飞行标记", 5 | "gui.world_map.look_at_waypoint": "查看标签", 6 | 7 | "item.meteorplus.logo": "Meteor+ 主标识", 8 | "item.meteorplus.logo_mods": "Meteor+ 整合包标识", 9 | 10 | "modules.meteor-client.better-tooltips.beehive.honey-level": "§7蜂蜜等级:§e%d§7", 11 | "modules.meteor-client.better-tooltips.beehive.bees": "§7蜜蜂数量:§e%d§7", 12 | 13 | "modules.meteor-client.better-tooltips.kilobytes": "§7%s KB", 14 | "modules.meteor-client.better-tooltips.bytes": "§7%s 字节", 15 | "modules.meteor-client.better-tooltips.error-getting-bytes": "§c字节数据获取失败", 16 | 17 | "modules.meteor-client.better-tooltips.unknown-inventory": "§4未知容器类型", 18 | 19 | "modules.meteor-client.better-tooltips.hold-to-preview": "按住 §e%s§r 以预览", 20 | 21 | "modules.meteor-client.inventory-tweaks.dump": "批量丢弃", 22 | "modules.meteor-client.inventory-tweaks.steal": "快速拿取" 23 | } 24 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/lang/zh_tw.json: -------------------------------------------------------------------------------- 1 | { 2 | "gui.world_map.baritone_goal_here": "Baritone 目標標記", 3 | "gui.world_map.baritone_path_here": "Baritone 路徑標記", 4 | "gui.world_map.baritone_elytra_here": "Baritone 鞘翅飛行標記", 5 | "gui.world_map.look_at_waypoint": "查看標籤", 6 | 7 | "item.meteorplus.logo": "Meteor+ 主標誌", 8 | "item.meteorplus.logo_mods": "Meteor+ 整合包標誌", 9 | 10 | "modules.meteor-client.better-tooltips.beehive.honey-level": "§7蜂蜜等級:§e%d§7", 11 | "modules.meteor-client.better-tooltips.beehive.bees": "§7蜜蜂數量:§e%d§7", 12 | 13 | "modules.meteor-client.better-tooltips.kilobytes": "§7%s KB", 14 | "modules.meteor-client.better-tooltips.bytes": "§7%s 位元組", 15 | "modules.meteor-client.better-tooltips.error-getting-bytes": "§c位元組資料獲取失敗", 16 | 17 | "modules.meteor-client.better-tooltips.unknown-inventory": "§4未知容器類型", 18 | 19 | "modules.meteor-client.better-tooltips.hold-to-preview": "按住 §e%s§r 以預覽", 20 | 21 | "modules.meteor-client.inventory-tweaks.dump": "批量丟棄", 22 | "modules.meteor-client.inventory-tweaks.steal": "快速拿取" 23 | } 24 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/src/main/resources/assets/meteorplus/logo.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/models/item/diamond.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "meteorplus:item/diamond" 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/models/item/logo.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "meteorplus:item/logo" 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/models/item/logo_mods.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "meteorplus:item/logo_mods" 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/models/item/money.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "meteorplus:item/money" 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/models/item/star.json: -------------------------------------------------------------------------------- 1 | { 2 | "parent": "item/generated", 3 | "textures": { 4 | "layer0": "meteorplus:item/star" 5 | } 6 | } 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/textures/item/diamond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/src/main/resources/assets/meteorplus/textures/item/diamond.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/textures/item/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/src/main/resources/assets/meteorplus/textures/item/logo.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/textures/item/logo_mods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/src/main/resources/assets/meteorplus/textures/item/logo_mods.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/textures/item/money.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/src/main/resources/assets/meteorplus/textures/item/money.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteorplus/textures/item/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorClientPlus/MeteorPlus/2f8dbeb1d249450ead5991621127e72d5fad633d/src/main/resources/assets/meteorplus/textures/item/star.png -------------------------------------------------------------------------------- /src/main/resources/fabric.mod.json: -------------------------------------------------------------------------------- 1 | { 2 | "schemaVersion": 1, 3 | "id": "meteorplus", 4 | "version": "${version}", 5 | "name": "Meteor+", 6 | "description": "An addon for Meteor client that adds many blatant features.", 7 | "authors": [ 8 | "Neki_play" 9 | ], 10 | "contact": { 11 | "homepage": "https://github.com/MeteorClientPlus/MeteorPlus", 12 | "issues": "https://github.com/MeteorClientPlus/MeteorPlus/issues", 13 | "sources": "https://github.com/MeteorClientPlus/MeteorPlus/MeteorPlus", 14 | "discord": "https://www.guilded.gg/i/27dAlJKk" 15 | }, 16 | "license": "GPL-3.0", 17 | "icon": "assets/meteorplus/icon.png", 18 | "environment": "*", 19 | "entrypoints": { 20 | "main": [ 21 | "nekiplay.Main" 22 | ], 23 | "meteor": [ 24 | "nekiplay.meteorplus.MeteorPlusAddon" 25 | ] 26 | }, 27 | "mixins": [ 28 | "meteorplus.mixins.json", 29 | "meteorplus-xaeroworldmap.mixins.json", 30 | "meteorplus-whereisit.mixins.json" 31 | ], 32 | "accessWidener": "meteorplus.accesswidener", 33 | "custom": { 34 | "meteor-client:color": "0,181,73", 35 | "github:sha": "${gh_hash}", 36 | "modmenu": { 37 | "links": { 38 | "modmenu.website": "https://meteorclientplus.github.io", 39 | "modmenu.discord": "https://discord.gg/Y3ardRfJXr" 40 | } 41 | } 42 | }, 43 | "depends": { 44 | "java": ">=21", 45 | "minecraft": ">=${mc_version}" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/resources/meteorplus-whereisit.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": false, 3 | "package": "nekiplay.meteorplus.mixin.whereisit", 4 | "compatibilityLevel": "JAVA_17", 5 | "plugin": "nekiplay.MixinPlugin", 6 | "client": [ 7 | "RenderingMixin" 8 | ], 9 | "injectors": { 10 | "defaultRequire": 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/resources/meteorplus-xaeroworldmap.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": false, 3 | "package": "nekiplay.meteorplus.mixin.xaero.worldmap", 4 | "compatibilityLevel": "JAVA_17", 5 | "plugin": "nekiplay.MixinPlugin", 6 | "client": [ 7 | "WaypointRendererMixin", 8 | "GuiMapMixin", 9 | "MapPixelAccessor" 10 | ], 11 | "injectors": { 12 | "defaultRequire": 1 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/resources/meteorplus.accesswidener: -------------------------------------------------------------------------------- 1 | accessWidener v1 named 2 | 3 | accessible method net/minecraft/entity/passive/AbstractHorseEntity canBreed ()Z 4 | accessible class net/minecraft/network/packet/c2s/play/PlayerInteractEntityC2SPacket$InteractType 5 | accessible field net/minecraft/client/input/Input movementVector Lnet/minecraft/util/math/Vec2f; 6 | accessible field net/minecraft/text/MutableText content Lnet/minecraft/text/TextContent; 7 | -------------------------------------------------------------------------------- /src/main/resources/meteorplus.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "package": "nekiplay.meteorplus.mixin", 4 | "compatibilityLevel": "JAVA_17", 5 | "plugin": "nekiplay.MixinPlugin", 6 | "client": [ 7 | "meteorclient.gui.WBlockPosEditMixin", 8 | "meteorclient.modules.BetterTooltipsMixin", 9 | "meteorclient.modules.BlockESPMixin", 10 | "meteorclient.modules.BreakIndicatorsMixin", 11 | "meteorclient.modules.CriticalsMixin", 12 | "meteorclient.modules.ESPMixin", 13 | "meteorclient.modules.FreecamMixin", 14 | "meteorclient.modules.ItemHighlightMixin", 15 | "meteorclient.modules.KillAuraMixin", 16 | "meteorclient.modules.MiddleClickExtraMixin", 17 | "meteorclient.modules.NameTagsMixin", 18 | "meteorclient.modules.NoRenderMixin", 19 | "meteorclient.modules.TracersMixin", 20 | "meteorclient.modules.WaypointsModuleMixin", 21 | "minecraft.ClientConnectionAccessor", 22 | "minecraft.ShapelessRecipeAccessor", 23 | "minecraft.entity.ShulkerEntityAccessor", 24 | "minecraft.hud.DebugHudMixin", 25 | "minecraft.hud.InGameHudMixin" 26 | ], 27 | "injectors": { 28 | "defaultRequire": 1 29 | }, 30 | "mixins": [ 31 | "meteorclient.gui.DefaultSettingsWidgetFactoryMixin", 32 | "meteorclient.gui.TitleScreenCreditsMixin", 33 | "meteorclient.utils.misc.KeybindMixin", 34 | "minecraft.StringReaderMixin", 35 | "minecraft.entity.ClientPlayerEntityMixin", 36 | "minecraft.entity.LivingEntityMixin", 37 | "minecraft.entity.PlayerMoveC2SPacketAccessor" 38 | ] 39 | } 40 | --------------------------------------------------------------------------------