├── .editorconfig ├── .github └── workflows │ ├── dev_build.yml │ ├── pull_request.yml │ └── push.yml ├── .gitignore ├── README.md ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src └── main ├── java ├── bebra │ └── hack │ │ └── addon │ │ ├── Addon.java │ │ ├── Utils │ │ ├── ArmorUtils.java │ │ ├── AutomationUtils.java │ │ ├── BEntityUtils.java │ │ ├── BPlayerUtils.java │ │ ├── BWorldUtils.java │ │ ├── BlockHelper.java │ │ ├── BlockInfo.java │ │ ├── CHMainUtils.java │ │ ├── EntityInfo.java │ │ ├── HelperUtil.java │ │ ├── Interactions.java │ │ ├── SendRawMessageEvent.java │ │ ├── Task.java │ │ ├── TimerUtilsbanana.java │ │ └── Utils.java │ │ ├── hud │ │ └── CustomImage.java │ │ └── modules │ │ ├── chat │ │ ├── AutoEz.java │ │ ├── AutoLogin.java │ │ ├── ChatEncryption.java │ │ ├── Prefix.java │ │ ├── SpamInChat.java │ │ └── bebra_info_and_help.java │ │ ├── pve │ │ ├── AutoBuild.java │ │ ├── AutoCraft.java │ │ ├── AutoDrop.java │ │ ├── AutoExit.java │ │ ├── AutoSex.java │ │ ├── AutoTNT.java │ │ ├── Chests_farmer.java │ │ ├── DupeWithFrame.java │ │ ├── Efly.java │ │ ├── Lavacast.java │ │ ├── NewsPaperHelperEu.java │ │ ├── NewsPaperHelperRu.java │ │ ├── NoDesync.java │ │ ├── PingSpoofer.java │ │ ├── Platforms.java │ │ ├── SilentItem.java │ │ ├── Spinner.java │ │ ├── TreeAura.java │ │ ├── Twerk.java │ │ └── VillagerRoller.java │ │ ├── pvp │ │ ├── AntiCrystal.java │ │ ├── AntiSurroundBlocks.java │ │ ├── AutoSand.java │ │ ├── AutoTrapPlus.java │ │ ├── Blocker.java │ │ ├── Burrow.java │ │ ├── ButtonPlace.java │ │ ├── DeleteItems.java │ │ ├── DownBlocs.java │ │ ├── FanSurroundBEBRA.java │ │ ├── HitboxDesync.java │ │ ├── PIRAMIDKA.java │ │ ├── PacketHoleFill.java │ │ ├── SelfAnvilBEBRA.java │ │ ├── SurroundBEBRA.java │ │ ├── sphere.java │ │ └── tntauraBEBRAplus.java │ │ └── render │ │ ├── BebraESP.java │ │ ├── Bubbles.java │ │ ├── Bubbles2.java │ │ ├── HoleESPPlus.java │ │ ├── KillEffects.java │ │ ├── Linia.java │ │ ├── NewChunks.java │ │ └── TimeAnimator.java └── com │ └── example │ └── addon │ ├── Addon.java │ ├── Utils │ ├── AAABLYA.java │ ├── ArmorUtils.java │ ├── AutomationUtils.java │ ├── BEntityUtils.java │ ├── BPlayerUtils.java │ ├── BWorldUtils.java │ ├── BedUtils.java │ ├── BlockHelper.java │ ├── BlockInfo.java │ ├── BlockPosX.java │ ├── BlockUpdateEvent.java │ ├── BreakBlockEvent.java │ ├── CHMainUtils.java │ ├── DamageHelper.java │ ├── Distance.java │ ├── Emotes.java │ ├── EntityInfo.java │ ├── Formatter.java │ ├── HandledScreenAccessor.java │ ├── IRenderer2D.java │ ├── Initialization.java │ ├── InteractUtils.java │ ├── Interaction.java │ ├── InvHelper.java │ ├── Item2IntMapSetting.java │ ├── ItemHelper.java │ ├── Location.java │ ├── OSUtil.java │ ├── Place.java │ ├── RenderInfo.java │ ├── RenderUtils.java │ ├── SendRawMessageEvent.java │ ├── SpotifyService.java │ ├── Stats.java │ ├── SystemTimer.java │ ├── TL.java │ ├── TargetHelper.java │ ├── Task.java │ ├── TimerUtils.java │ ├── TimerUtilsbanana.java │ ├── Util.java │ ├── Utili.java │ ├── Utils.java │ ├── Vec3dInfo.java │ ├── VillagerEntityAccessor.java │ └── bbc │ │ └── world │ │ ├── BlockHelper.java │ │ ├── BlockPosX.java │ │ └── DamageHelper.java │ └── modules │ ├── BebraHackPVP │ ├── AnchorAuraBEBRA.java │ ├── AntiBurrow.java │ ├── AntiCrystal.java │ ├── AntiSurroundBlocks.java │ ├── AutoEz.java │ ├── Burrow.java │ ├── CevBreaker.java │ ├── FanSurroundBEBRA.java │ ├── Notifications.java │ ├── PacketHoleFill.java │ ├── SelfAnvilBEBRA.java │ ├── SurroundBEBRA.java │ ├── sphere.java │ └── tntauraBEBRAplus.java │ ├── BebraHackRender │ ├── AntiVanish.java │ ├── BebraESP.java │ ├── BurrowESP.java │ ├── Confetti.java │ ├── HoleESPPlus.java │ ├── KillEffects.java │ ├── NewChunks.java │ ├── Prefix.java │ └── TimeAnimator.java │ ├── hud │ ├── CustomImage.java │ └── Killfeed.java │ └── misc │ ├── AutoBuild.java │ ├── AutoCraft.java │ ├── AutoLogTotems.java │ ├── AutoLogin.java │ ├── AutoSex.java │ ├── AutoTNT.java │ ├── ChatEncryption.java │ ├── CoordLogger.java │ ├── EFly.java │ ├── Lavacast.java │ ├── MEGA_DUPEprank.java │ ├── NoDesync.java │ ├── PacketFly.java │ ├── PingSpoofer.java │ ├── SilentItem.java │ ├── SpamInChat.java │ ├── Spinner.java │ ├── TreeAura.java │ ├── Twerk.java │ ├── VillagerRoller.java │ └── bebra_info_and_help.java └── resources ├── addon-template.mixins.json ├── addon.mixins.json ├── assets ├── logo1.png ├── logo2.png ├── logo3.png └── template │ └── icon.png └── fabric.mod.json /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | indent_style = space 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/workflows/dev_build.yml: -------------------------------------------------------------------------------- 1 | name: Publish Development Build 2 | on: push 3 | 4 | jobs: 5 | build: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v2 9 | - uses: actions/setup-java@v2 10 | with: 11 | java-version: 17 12 | distribution: adopt 13 | - name: Build 14 | run: ./gradlew build 15 | - name: Release 16 | uses: marvinpinto/action-automatic-releases@latest 17 | with: 18 | repo_token: '${{ secrets.GITHUB_TOKEN }}' 19 | automatic_release_tag: latest 20 | prerelease: true 21 | title: Dev Build 22 | files: | 23 | ./build/libs/*.jar 24 | -------------------------------------------------------------------------------- /.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@v2 9 | - uses: actions/setup-java@v2 10 | with: 11 | java-version: 17 12 | distribution: adopt 13 | - name: Build 14 | run: ./gradlew build 15 | - name: Upload artifacts 16 | uses: actions/upload-artifact@v2.2.4 17 | with: 18 | name: build-artifacts 19 | path: build/libs 20 | -------------------------------------------------------------------------------- /.github/workflows/push.yml: -------------------------------------------------------------------------------- 1 | name: Java CI with Gradle 2 | 3 | concurrency: 4 | group: "V6" 5 | cancel-in-progress: true 6 | 7 | on: 8 | push: 9 | branches: [ V6 ] 10 | paths-ignore: 11 | - '*.md' 12 | 13 | 14 | jobs: 15 | build: 16 | 17 | runs-on: ubuntu-latest 18 | steps: 19 | - uses: actions/checkout@v3 20 | - name: Set up JDK 18 21 | uses: actions/setup-java@v3 22 | with: 23 | java-version: 18 24 | distribution: 'zulu' 25 | - name: Grant execute permission for gradlew 26 | run: chmod +x gradlew 27 | - name: Build with Gradle 28 | run: ./gradlew build 29 | - name: Remove *-dev.jar 30 | run: rm ./build/libs/*-dev.jar || true 31 | - uses: "marvinpinto/action-automatic-releases@latest" 32 | with: 33 | repo_token: "${{ secrets.GITHUB_TOKEN }}" 34 | automatic_release_tag: "V6" 35 | prerelease: false 36 | title: "V6" 37 | files: | 38 | ./build/libs/*.jar 39 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 |

BebraHack

3 | 4 | BebraHack banner 5 | 6 |

Adds additional functionality to Meteor Client ☄️

7 | Minecraft 8 | GitHub release 9 | GitHub downloads 10 | GitHub Repo stars 11 | GitHub code size 12 | GitHub issues 13 | 14 |
15 | 16 | 17 | 18 | ## ℹ️ Information 19 | This addon adds many new features to the [Meteor Client](https://meteorclient.com/). If you want to add or suggest any feature, then write [here](https://github.com/BebraHack/BebraHackAddon/issues/new?assignees=&labels=enhancement&template=feature_request.yml&title=%5BSuggestion%5D+). 20 | 21 | ⭐ **Star this repository, to support me!** 22 | 23 | ## ⬇️ Download 24 | You can [see how it looks](https://zgoly.github.io/addonview/generate?user=BebraHack&repo=BebraHackAddon&path=src/main/java/com/example/addon/modules) before downloading. 25 | 26 | 1. Click **[here](https://github.com/BebraHack/BebraHackAddon/releases/download/V6/Bebrahack_V6-0.1.0.jar)** to download 27 | 2. Move `Bebrahack_V6-0.1.0.jar` in `.minecraft/mods` folder 28 | 29 | Don't forget to download **[meteor dev build](https://meteorclient.com/download?devBuild=latest)** 30 | 31 | ## ⁉️ Problems 32 | If you find any bug or have any problem write [here](https://github.com/BebraHack/BebraHackAddon/issues/new?assignees=&labels=bug&template=bug.yml&title=%5BBug%5D+). 33 | 34 | 35 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id "fabric-loom" version "1.1-SNAPSHOT" 3 | } 4 | 5 | sourceCompatibility = targetCompatibility = JavaVersion.VERSION_17 6 | 7 | archivesBaseName = project.archives_base_name 8 | version = project.mod_version 9 | group = project.maven_group 10 | 11 | repositories { 12 | maven { 13 | name = "Meteor Dev Releases" 14 | url = "https://maven.meteordev.org/releases" 15 | } 16 | maven { 17 | name = "Meteor Dev Snapshots" 18 | url = "https://maven.meteordev.org/snapshots" 19 | } 20 | } 21 | 22 | dependencies { 23 | // Fabric 24 | minecraft "com.mojang:minecraft:${project.minecraft_version}" 25 | mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" 26 | modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" 27 | 28 | // Meteor 29 | modImplementation "meteordevelopment:meteor-client:${project.meteor_version}" 30 | } 31 | 32 | processResources { 33 | filesMatching("fabric.mod.json") { 34 | expand "version": project.version, "mc_version": project.minecraft_version 35 | } 36 | } 37 | 38 | tasks.withType(JavaCompile).configureEach { 39 | it.options.encoding("UTF-8") 40 | } 41 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx2G 2 | 3 | # Fabric Properties (https://fabricmc.net/develop) 4 | minecraft_version=1.19.4 5 | yarn_mappings=1.19.4+build.2 6 | loader_version=0.14.19 7 | 8 | # Mod Properties 9 | mod_version=0.1.0 10 | maven_group=bebra.hack 11 | archives_base_name=Bebrahack V6 12 | 13 | # Dependencies 14 | 15 | # Meteor (https://maven.meteordev.org) 16 | meteor_version=0.5.3-SNAPSHOT 17 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BebraHack/BebraHackAddon/7916b607fe76e3c412d9db9a6cb4477bdacd0874/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.1.1-bin.zip 4 | networkTimeout=10000 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /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 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 48 | echo. 49 | echo Please set the JAVA_HOME variable in your environment to match the 50 | echo location of your Java installation. 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 62 | echo. 63 | echo Please set the JAVA_HOME variable in your environment to match the 64 | echo location of your Java installation. 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /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/bebra/hack/addon/Addon.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon; 2 | 3 | import bebra.hack.addon.hud.CustomImage; 4 | import bebra.hack.addon.modules.chat.*; 5 | import bebra.hack.addon.modules.pve.*; 6 | import bebra.hack.addon.modules.pvp.*; 7 | import bebra.hack.addon.modules.render.*; 8 | import com.mojang.logging.LogUtils; 9 | import meteordevelopment.meteorclient.addons.MeteorAddon; 10 | import meteordevelopment.meteorclient.systems.hud.Hud; 11 | import meteordevelopment.meteorclient.systems.hud.HudGroup; 12 | import meteordevelopment.meteorclient.systems.modules.Category; 13 | import meteordevelopment.meteorclient.systems.modules.Modules; 14 | import meteordevelopment.meteorclient.systems.modules.combat.Surround; 15 | import org.slf4j.Logger; 16 | 17 | public class Addon extends MeteorAddon { 18 | 19 | public static String VERSION = "BebraHackV6"; 20 | public static final Logger LOG = LogUtils.getLogger(); 21 | public static final Category combat = new Category("BebraHackPVP"); 22 | 23 | public static final Category misc = new Category("BebraHackPVE"); 24 | public static final Category render = new Category("BebraHackRender"); 25 | public static final Category chat = new Category("BebraHackChat"); 26 | public static final HudGroup HUD_GROUP = new HudGroup("BebraHackHUD"); 27 | 28 | @Override 29 | public void onInitialize() { 30 | LOG.info("Initializing Meteor Addon BebraHackV6"); 31 | 32 | // PVP 33 | Modules.get().add(new sphere()); 34 | Modules.get().add(new Blocker()); 35 | Modules.get().add(new HitboxDesync()); 36 | Modules.get().add(new tntauraBEBRAplus()); 37 | Modules.get().add(new DownBlocs()); 38 | Modules.get().add(new AutoTrapPlus()); 39 | Modules.get().add(new FanSurroundBEBRA()); 40 | Modules.get().add(new AutoExit()); 41 | Modules.get().add(new AntiCrystal()); 42 | Modules.get().add(new AntiSurroundBlocks()); 43 | Modules.get().add(new Burrow()); 44 | Modules.get().add(new PIRAMIDKA()); 45 | Modules.get().add(new ButtonPlace()); 46 | Modules.get().add(new PacketHoleFill()); 47 | Modules.get().add(new SelfAnvilBEBRA()); 48 | Modules.get().add(new SurroundBEBRA()); 49 | Modules.get().add(new DeleteItems()); 50 | 51 | // PVE 52 | Modules.get().add(new AutoDrop()); 53 | Modules.get().add(new Platforms()); 54 | Modules.get().add(new AutoBuild()); 55 | //Modules.get().add(new AutoCraft()); 56 | Modules.get().add(new AutoSand()); 57 | Modules.get().add(new TreeAura()); 58 | Modules.get().add(new NoDesync()); 59 | Modules.get().add(new EFly()); 60 | Modules.get().add(new SilentItem()); 61 | Modules.get().add(new VillagerRoller()); 62 | Modules.get().add(new DupeWithFrame()); 63 | Modules.get().add(new AutoSex()); 64 | Modules.get().add(new AutoTNT()); 65 | Modules.get().add(new Twerk()); 66 | Modules.get().add(new Spinner()); 67 | Modules.get().add(new Lavacast()); 68 | Modules.get().add(new PingSpoofer()); 69 | Modules.get().add(new Chests_farmer()); 70 | Modules.get().add(new NewsPaperHelperRu()); 71 | Modules.get().add(new NewsPaperHelperEu()); 72 | 73 | //RENDER 74 | Modules.get().add(new BebraESP()); 75 | Modules.get().add(new NewChunks()); 76 | Modules.get().add(new TimeAnimator()); 77 | Modules.get().add(new Bubbles()); 78 | Modules.get().add(new Bubbles2()); 79 | Modules.get().add(new KillEffects()); 80 | Modules.get().add(new HoleESPPlus()); 81 | //Modules.get().add(new Linia()); 82 | 83 | //CHAT 84 | Modules.get().add(new bebra_info_and_help()); 85 | Modules.get().add(new ChatEncryption()); 86 | Modules.get().add(new Prefix()); 87 | Modules.get().add(new SpamInChat()); 88 | Modules.get().add(new AutoLogin()); 89 | //Modules.get().add(new AutoEz()); 90 | 91 | 92 | // HUD 93 | Hud.get().register(CustomImage.INFO); 94 | } 95 | 96 | @Override 97 | public void onRegisterCategories() { 98 | 99 | Modules.registerCategory(combat); 100 | Modules.registerCategory(render); 101 | Modules.registerCategory(misc); 102 | Modules.registerCategory(chat); 103 | } 104 | 105 | @Override 106 | public String getPackage() { 107 | return "bebra.hack.addon"; 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/Utils/ArmorUtils.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.Utils; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.item.Items; 5 | 6 | import static meteordevelopment.meteorclient.MeteorClient.mc; 7 | 8 | public class ArmorUtils { 9 | 10 | public static ItemStack getArmor(int slot) { 11 | return mc.player.getInventory().armor.get(slot); 12 | } 13 | 14 | public static boolean isFallFlying() { 15 | return getArmor(2).getItem() == Items.ELYTRA && mc.player.isFallFlying(); 16 | } 17 | 18 | public static boolean checkThreshold(ItemStack i, double threshold) { 19 | return getDamage(i) <= threshold; 20 | } 21 | 22 | public static double getDamage(ItemStack i) {return (((double) (i.getMaxDamage() - i.getDamage()) / i.getMaxDamage()) * 100);} 23 | 24 | 25 | public static boolean isHelm(ItemStack itemStack) { 26 | if (itemStack == null) return false; 27 | if (itemStack.getItem() == Items.NETHERITE_HELMET) return true; 28 | if (itemStack.getItem() == Items.DIAMOND_HELMET) return true; 29 | if (itemStack.getItem() == Items.GOLDEN_HELMET) return true; 30 | if (itemStack.getItem() == Items.IRON_HELMET) return true; 31 | if (itemStack.getItem() == Items.CHAINMAIL_HELMET) return true; 32 | return itemStack.getItem() == Items.LEATHER_HELMET; 33 | } 34 | 35 | public static boolean isChest(ItemStack itemStack) { 36 | if (itemStack == null) return false; 37 | if (itemStack.getItem() == Items.NETHERITE_CHESTPLATE) return true; 38 | if (itemStack.getItem() == Items.DIAMOND_CHESTPLATE) return true; 39 | if (itemStack.getItem() == Items.GOLDEN_CHESTPLATE) return true; 40 | if (itemStack.getItem() == Items.IRON_CHESTPLATE) return true; 41 | if (itemStack.getItem() == Items.CHAINMAIL_CHESTPLATE) return true; 42 | return itemStack.getItem() == Items.LEATHER_CHESTPLATE; 43 | } 44 | 45 | public static boolean isLegs(ItemStack itemStack) { 46 | if (itemStack == null) return false; 47 | if (itemStack.getItem() == Items.NETHERITE_LEGGINGS) return true; 48 | if (itemStack.getItem() == Items.DIAMOND_LEGGINGS) return true; 49 | if (itemStack.getItem() == Items.GOLDEN_LEGGINGS) return true; 50 | if (itemStack.getItem() == Items.IRON_LEGGINGS) return true; 51 | if (itemStack.getItem() == Items.CHAINMAIL_LEGGINGS) return true; 52 | return itemStack.getItem() == Items.LEATHER_LEGGINGS; 53 | } 54 | 55 | public static boolean isBoots(ItemStack itemStack) { 56 | if (itemStack == null) return false; 57 | if (itemStack.getItem() == Items.NETHERITE_BOOTS) return true; 58 | if (itemStack.getItem() == Items.DIAMOND_BOOTS) return true; 59 | if (itemStack.getItem() == Items.GOLDEN_BOOTS) return true; 60 | if (itemStack.getItem() == Items.IRON_BOOTS) return true; 61 | if (itemStack.getItem() == Items.CHAINMAIL_BOOTS) return true; 62 | return itemStack.getItem() == Items.LEATHER_BOOTS; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/Utils/BPlayerUtils.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.Utils; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.util.math.BlockPos; 5 | import net.minecraft.util.math.Direction; 6 | import net.minecraft.util.math.Vec3d; 7 | 8 | import static meteordevelopment.meteorclient.MeteorClient.mc; 9 | 10 | public class BPlayerUtils { 11 | public static Vec3d playerEyePos() { 12 | return new Vec3d(mc.player.getX(), mc.player.getY() + mc.player.getEyeHeight(mc.player.getPose()), mc.player.getZ()); 13 | } 14 | 15 | public static double distanceFromEye(Entity entity) { 16 | double feet = distanceFromEye(entity.getX(), entity.getY(), entity.getZ()); 17 | double head = distanceFromEye(entity.getX(), entity.getY() + entity.getHeight(), entity.getZ()); 18 | return Math.min(head, feet); 19 | } 20 | 21 | public static double distanceFromEye(BlockPos blockPos) { 22 | return distanceFromEye(blockPos.getX(), blockPos.getY(), blockPos.getZ()); 23 | } 24 | 25 | public static double distanceFromEye(Vec3d vec3d) { 26 | return distanceFromEye(vec3d.getX(), vec3d.getY(), vec3d.getZ()); 27 | } 28 | 29 | public static double distanceFromEye(double x, double y, double z) { 30 | double f = (mc.player.getX() - x); 31 | double g = (mc.player.getY() + mc.player.getEyeHeight(mc.player.getPose()) - y); 32 | double h = (mc.player.getZ() - z); 33 | return Math.sqrt(f * f + g * g + h * h); 34 | } 35 | 36 | public static double[] directionSpeed(float speed) { 37 | float forward = mc.player.input.movementForward; 38 | float side = mc.player.input.movementSideways; 39 | float yaw = mc.player.prevYaw + (mc.player.getYaw() - mc.player.prevYaw); 40 | 41 | if (forward != 0.0F) { 42 | if (side > 0.0F) { 43 | yaw += ((forward > 0.0F) ? -45 : 45); 44 | } else if (side < 0.0F) { 45 | yaw += ((forward > 0.0F) ? 45 : -45); 46 | } 47 | 48 | side = 0.0F; 49 | 50 | if (forward > 0.0F) { 51 | forward = 1.0F; 52 | } else if (forward < 0.0F) { 53 | forward = -1.0F; 54 | } 55 | } 56 | 57 | double sin = Math.sin(Math.toRadians(yaw + 90.0F)); 58 | double cos = Math.cos(Math.toRadians(yaw + 90.0F)); 59 | double dx = forward * speed * cos + side * speed * sin; 60 | double dz = forward * speed * sin - side * speed * cos; 61 | 62 | return new double[] { dx, dz }; 63 | } 64 | 65 | public static Direction direction(float yaw){ 66 | yaw = yaw % 360; 67 | if (yaw < 0) yaw += 360; 68 | 69 | if (yaw >= 315 || yaw < 45) return Direction.SOUTH; 70 | else if (yaw >= 45 && yaw < 135) return Direction.WEST; 71 | else if (yaw >= 135 && yaw < 225) return Direction.NORTH; 72 | else if (yaw >= 225 && yaw < 315) return Direction.EAST; 73 | 74 | return Direction.SOUTH; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/Utils/BlockHelper.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.Utils; 2 | 3 | import bebra.hack.addon.Utils.AutomationUtils; 4 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 5 | import net.minecraft.block.Block; 6 | import net.minecraft.block.Blocks; 7 | import net.minecraft.entity.player.PlayerEntity; 8 | import net.minecraft.util.math.BlockPos; 9 | import net.minecraft.util.math.Direction; 10 | import net.minecraft.util.math.MathHelper; 11 | import net.minecraft.util.math.Vec3d; 12 | 13 | import java.util.ArrayList; 14 | import java.util.Comparator; 15 | import java.util.List; 16 | import java.util.Random; 17 | 18 | import static meteordevelopment.meteorclient.MeteorClient.mc; 19 | 20 | public class BlockHelper { 21 | 22 | 23 | public static boolean isVecComplete(ArrayList vlist) { 24 | BlockPos ppos = mc.player.getBlockPos(); 25 | for (Vec3d b: vlist) { 26 | BlockPos bb = ppos.add((int) b.x, (int) b.y, (int) b.z); 27 | if (getBlock(bb) == Blocks.AIR) return false; 28 | } 29 | return true; 30 | } 31 | 32 | public static List getSphere(BlockPos centerPos, int radius, int height) { 33 | ArrayList blocks = new ArrayList<>(); 34 | for (int i = centerPos.getX() - radius; i < centerPos.getX() + radius; i++) { 35 | for (int j = centerPos.getY() - height; j < centerPos.getY() + height; j++) { 36 | for (int k = centerPos.getZ() - radius; k < centerPos.getZ() + radius; k++) { 37 | BlockPos pos = new BlockPos(i, j, k); 38 | if (distanceBetween(centerPos, pos) <= radius && !blocks.contains(pos)) blocks.add(pos); 39 | } 40 | } 41 | } 42 | return blocks; 43 | } 44 | 45 | 46 | public static double distanceBetween(BlockPos pos1, BlockPos pos2) { 47 | double d = pos1.getX() - pos2.getX(); 48 | double e = pos1.getY() - pos2.getY(); 49 | double f = pos1.getZ() - pos2.getZ(); 50 | return MathHelper.sqrt((float) (d * d + e * e + f * f)); 51 | } 52 | 53 | 54 | public static BlockPos getBlockPosFromDirection(Direction direction, BlockPos orginalPos) { 55 | return switch (direction) { 56 | case UP -> orginalPos.up(); 57 | case DOWN -> orginalPos.down(); 58 | case EAST -> orginalPos.east(); 59 | case WEST -> orginalPos.west(); 60 | case NORTH -> orginalPos.north(); 61 | case SOUTH -> orginalPos.south(); 62 | }; 63 | } 64 | 65 | 66 | public static Block getBlock(BlockPos p) { 67 | if (p == null) return null; 68 | return mc.world.getBlockState(p).getBlock(); 69 | } 70 | 71 | public static BlockPos getCityBlock(PlayerEntity target, Boolean randomize) { 72 | if (target == null || mc.player.distanceTo(target) > 4.8) return null; 73 | BlockPos targetBlock; 74 | List surroundBlocks = new ArrayList<>(); 75 | for (Direction direction : Direction.values()) { 76 | if (direction == Direction.UP || direction == Direction.DOWN) continue; 77 | BlockPos pos = target.getBlockPos().offset(direction); 78 | if (AutomationUtils.isSurroundBlock(pos)) surroundBlocks.add(pos); 79 | } 80 | if (surroundBlocks.isEmpty()) return null; 81 | surroundBlocks.sort(Comparator.comparingDouble(PlayerUtils::distanceTo)); 82 | int counter = 0; 83 | while (true) { 84 | if (counter >= 4) return null; 85 | BlockPos possibleTarget; 86 | if (randomize) { 87 | possibleTarget = surroundBlocks.get(new Random().nextInt(surroundBlocks.size())); 88 | } else { 89 | possibleTarget = surroundBlocks.get(counter); 90 | } 91 | if (!isOurSurroundBlock(possibleTarget) && !outOfRange(possibleTarget)) { 92 | targetBlock = possibleTarget; 93 | break; 94 | } 95 | counter++; 96 | } 97 | return targetBlock; 98 | } 99 | 100 | public static boolean isOurSurroundBlock(BlockPos bp) { 101 | BlockPos ppos = mc.player.getBlockPos(); 102 | for (Direction direction : Direction.values()) { 103 | if (direction == Direction.UP || direction == Direction.DOWN) continue; 104 | BlockPos pos = ppos.offset(direction); 105 | if (pos.equals(bp)) return true; 106 | } 107 | return false; 108 | } 109 | 110 | public static boolean outOfRange(BlockPos cityBlock) { 111 | return MathHelper.sqrt((float) mc.player.squaredDistanceTo(cityBlock.getX(), cityBlock.getY(), cityBlock.getZ())) > mc.interactionManager.getReachDistance(); 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/Utils/CHMainUtils.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import net.minecraft.entity.Entity; 5 | import net.minecraft.entity.player.PlayerEntity; 6 | import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket; 7 | import org.apache.commons.codec.binary.Base64; 8 | import org.apache.commons.codec.digest.DigestUtils; 9 | 10 | import javax.crypto.BadPaddingException; 11 | import javax.crypto.Cipher; 12 | import javax.crypto.IllegalBlockSizeException; 13 | import javax.crypto.NoSuchPaddingException; 14 | import javax.crypto.spec.SecretKeySpec; 15 | import java.security.InvalidKeyException; 16 | import java.security.NoSuchAlgorithmException; 17 | import java.util.Arrays; 18 | 19 | import static meteordevelopment.meteorclient.MeteorClient.mc; 20 | 21 | public class CHMainUtils { 22 | 23 | public static String encrypt(String text, String key) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException { 24 | Cipher cipher = Cipher.getInstance("AES"); 25 | cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(Arrays.copyOf(DigestUtils.sha1(key), 16), "AES")); 26 | 27 | return Base64.encodeBase64String(cipher.doFinal(text.getBytes())); 28 | } 29 | 30 | public static String decrypt(String text, String key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { 31 | Cipher cipher = Cipher.getInstance("AES"); 32 | cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(Arrays.copyOf(DigestUtils.sha1(key), 16), "AES")); 33 | 34 | return new String(cipher.doFinal(Base64.decodeBase64(text))); 35 | } 36 | 37 | public static String apply(String msg) { 38 | if (msg.contains(":smile:")) msg = msg.replace(":smile:", "☺"); 39 | if (msg.contains(":sad:")) msg = msg.replace(":sad:", "☹"); 40 | if (msg.contains(":heart:")) msg = msg.replace(":heart:", "❤"); 41 | if (msg.contains(":skull:")) msg = msg.replace(":skull:", "☠"); 42 | if (msg.contains(":star:")) msg = msg.replace(":star:", "★"); 43 | if (msg.contains(":flower:")) msg = msg.replace(":flower:", "❀"); 44 | if (msg.contains(":pick:")) msg = msg.replace(":pick:", "⛏"); 45 | if (msg.contains(":wheelchair:")) msg = msg.replace(":wheelchair:", "♿"); 46 | if (msg.contains(":lightning:")) msg = msg.replace(":lightning:", "⚡"); 47 | if (msg.contains(":rod:")) msg = msg.replace(":rod:", "🎣"); 48 | if (msg.contains(":potion:")) msg = msg.replace(":potion:", "🧪"); 49 | if (msg.contains(":fire:")) msg = msg.replace(":fire:", "🔥"); 50 | if (msg.contains(":shears:")) msg = msg.replace(":shears:", "✂"); 51 | if (msg.contains(":bell:")) msg = msg.replace(":bell:", "🔔"); 52 | if (msg.contains(":bow:")) msg = msg.replace(":bow:", "🏹"); 53 | if (msg.contains(":trident:")) msg = msg.replace(":trident:", "🔱"); 54 | if (msg.contains(":cloud:")) msg = msg.replace(":cloud:", "☁"); 55 | if (msg.contains(":cat:")) msg = msg.replace(":cat:", "ᓚᘏᗢ"); 56 | 57 | return msg; 58 | } 59 | public static Entity deadEntity; 60 | public static boolean isDeathPacket(PacketEvent.Receive event) { 61 | if (event.packet instanceof EntityStatusS2CPacket packet) { 62 | if (packet.getStatus() == 3) { 63 | deadEntity = packet.getEntity(mc.world); 64 | return deadEntity instanceof PlayerEntity; 65 | } 66 | } 67 | return false; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/Utils/HelperUtil.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 4 | import meteordevelopment.meteorclient.utils.player.InvUtils; 5 | import net.minecraft.entity.player.PlayerEntity; 6 | import net.minecraft.item.Items; 7 | import net.minecraft.util.math.BlockPos; 8 | 9 | import static meteordevelopment.meteorclient.MeteorClient.mc; 10 | 11 | public class HelperUtil { 12 | 13 | public static FindItemResult obby() { 14 | return InvUtils.findInHotbar(Items.OBSIDIAN); 15 | } 16 | 17 | public static FindItemResult piston() { 18 | return InvUtils.findInHotbar(Items.PISTON, Items.STICKY_PISTON); 19 | } 20 | 21 | public static FindItemResult redstone() { 22 | return InvUtils.findInHotbar(Items.REDSTONE_BLOCK, Items.REDSTONE_TORCH); 23 | } 24 | 25 | public static boolean isInHole(PlayerEntity player) { 26 | BlockPos pos = player.getBlockPos(); 27 | return !mc.world.getBlockState(pos.add(1, 0, 0)).isAir() 28 | && !mc.world.getBlockState(pos.add(-1, 0, 0)).isAir() 29 | && !mc.world.getBlockState(pos.add(0, 0, 1)).isAir() 30 | && !mc.world.getBlockState(pos.add(0, 0, -1)).isAir() 31 | && !mc.world.getBlockState(pos.add(0, -1, 0)).isAir(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/Utils/SendRawMessageEvent.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.events.Cancellable; 4 | 5 | public class SendRawMessageEvent extends Cancellable { 6 | private static final SendRawMessageEvent INSTANCE = new SendRawMessageEvent(); 7 | 8 | public String message; 9 | 10 | public static SendRawMessageEvent get(String message) { 11 | INSTANCE.setCancelled(false); 12 | INSTANCE.message = message; 13 | return INSTANCE; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/Utils/Task.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.Utils; 2 | 3 | public class Task { 4 | 5 | private boolean called; 6 | 7 | public Task() { 8 | this.called = false; 9 | } 10 | 11 | public void run(Runnable task) { 12 | if (!isCalled()) { 13 | task.run(); 14 | setCalled(); 15 | } 16 | } 17 | 18 | public void run(Runnable task, int times) { 19 | if (!isCalled()) { 20 | int i; 21 | 22 | for (i = 0; i < times; i++) { 23 | task.run(); 24 | } 25 | 26 | if (i >= times) setCalled(); 27 | } 28 | } 29 | 30 | public void reset() { 31 | this.called = false; 32 | } 33 | 34 | public boolean isCalled() { 35 | return this.called; 36 | } 37 | 38 | public void setCalled() { 39 | this.called = true; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/Utils/TimerUtilsbanana.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.utils.world.TickRate; 4 | 5 | public class TimerUtilsbanana { 6 | private long nanoTime = -1L; 7 | 8 | public void reset() { 9 | nanoTime = System.nanoTime(); 10 | } 11 | 12 | // Set Times 13 | public void setTicks(long ticks) { nanoTime = System.nanoTime() - convertTicksToNano(ticks); } 14 | public void setNano(long time) { nanoTime = System.nanoTime() - time; } 15 | public void setMicro(long time) { nanoTime = System.nanoTime() - convertMicroToNano(time); } 16 | public void setMillis(long time) { nanoTime = System.nanoTime() - convertMillisToNano(time); } 17 | public void setSec(long time) { nanoTime = System.nanoTime() - convertSecToNano(time); } 18 | 19 | 20 | // Get Times 21 | public long getTicks() { return convertNanoToTicks(nanoTime); } 22 | public long getNano() { return nanoTime; } 23 | public long getMicro() { return convertNanoToMicro(nanoTime); } 24 | public long getMillis() { return convertNanoToMillis(nanoTime); } 25 | public long getSec() { return convertNanoToSec(nanoTime); } 26 | 27 | 28 | // Passed Time 29 | public boolean passedTicks(long ticks) { return passedNano(convertTicksToNano(ticks)); } 30 | public boolean passedNano(long time) { return System.nanoTime() - nanoTime >= time; } 31 | public boolean passedMicro(long time) { return passedNano(convertMicroToNano(time)); } 32 | public boolean passedMillis(long time) { return passedNano(convertMillisToNano(time)); } 33 | public boolean passedSec(long time) { return passedNano(convertSecToNano(time)); } 34 | 35 | 36 | // Tick Conversions 37 | public long convertMillisToTicks(long time) { return time / 50; } 38 | public long convertTicksToMillis(long ticks) { return ticks * 50; } 39 | public long convertNanoToTicks(long time) { return convertMillisToTicks(convertNanoToMillis(time)); } 40 | public long convertTicksToNano(long ticks) { return convertMillisToNano(convertTicksToMillis(ticks)); } 41 | 42 | 43 | // All Conversions To Smaller 44 | public long convertSecToMillis(long time) { return time * 1000L; } 45 | public long convertSecToMicro(long time) { return convertMillisToMicro(convertSecToMillis(time)); } 46 | public long convertSecToNano(long time) { return convertMicroToNano(convertMillisToMicro(convertSecToMillis(time))); } 47 | 48 | public long convertMillisToMicro(long time) { return time * 1000L; } 49 | public long convertMillisToNano(long time) { return convertMicroToNano(convertMillisToMicro(time)); } 50 | 51 | public long convertMicroToNano(long time) { return time * 1000L; } 52 | 53 | 54 | // All Conversions To Larger 55 | public long convertNanoToMicro(long time) { return time / 1000L; } 56 | public long convertNanoToMillis(long time) { return convertMicroToMillis(convertNanoToMicro(time)); } 57 | public long convertNanoToSec(long time) { return convertMillisToSec(convertMicroToMillis(convertNanoToMicro(time))); } 58 | 59 | public long convertMicroToMillis(long time) { return time / 1000L; } 60 | public long convertMicroToSec(long time) { return convertMillisToSec(convertMicroToMillis(time)); } 61 | 62 | public long convertMillisToSec(long time) { return time / 1000L; } 63 | 64 | 65 | // Syncs 66 | public static double getTPSMatch(boolean TPSSync) { 67 | return TPSSync ? (TickRate.INSTANCE.getTickRate() / 20) : 1; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/chat/AutoEz.java: -------------------------------------------------------------------------------- 1 | /*package bebra.hack.addon.modules.chat; 2 | 3 | import bebra.hack.addon.Addon; 4 | import it.unimi.dsi.fastutil.objects.Object2IntMap; 5 | import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; 6 | import meteordevelopment.meteorclient.events.game.GameJoinedEvent; 7 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 8 | import meteordevelopment.meteorclient.events.world.TickEvent; 9 | import meteordevelopment.meteorclient.settings.*; 10 | import meteordevelopment.meteorclient.systems.friends.Friends; 11 | import meteordevelopment.meteorclient.systems.modules.Module; 12 | import meteordevelopment.meteorclient.utils.Utils; 13 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 14 | import meteordevelopment.orbit.EventHandler; 15 | import net.minecraft.entity.Entity; 16 | import net.minecraft.entity.player.PlayerEntity; 17 | import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket; 18 | import net.minecraft.util.Formatting; 19 | 20 | import java.util.List; 21 | import java.util.Random; 22 | import java.util.UUID; 23 | 24 | public class AutoEz extends Module { 25 | private final SettingGroup sgEz = settings.getDefaultGroup(); 26 | private final Setting messages = sgEz.add(new StringSetting.Builder().name("messages").defaultValue("Ez").build()); 27 | private final Setting ignoreFriends = sgEz.add(new BoolSetting.Builder().name("ignore-friends").defaultValue(true).build()); 28 | 29 | private final Object2IntMap totemPopMap = new Object2IntOpenHashMap<>(); 30 | private final Object2IntMap chatIdMap = new Object2IntOpenHashMap<>(); 31 | private final Random random = new Random(); 32 | 33 | public AutoEz() { 34 | super(Addon.chat, "autoez", "ezzz noob"); 35 | } 36 | 37 | @Override 38 | public void onActivate() { 39 | totemPopMap.clear(); 40 | chatIdMap.clear(); 41 | } 42 | 43 | @EventHandler 44 | private void onGameJoin(GameJoinedEvent event) { 45 | totemPopMap.clear(); 46 | chatIdMap.clear(); 47 | } 48 | 49 | @EventHandler 50 | private void onReceivePacket(PacketEvent.Receive event) { 51 | if (!(event.packet instanceof EntityStatusS2CPacket p)) return; 52 | 53 | if (p.getStatus() != 35) return; 54 | 55 | Entity entity = p.getEntity(mc.world); 56 | 57 | if (!(entity instanceof PlayerEntity)) return; 58 | 59 | if (entity.equals(mc.player) 60 | || (Friends.get().isFriend(((PlayerEntity) entity)) && ignoreFriends.get()) 61 | ) return; 62 | 63 | synchronized (totemPopMap) { 64 | int pops = totemPopMap.getOrDefault(entity.getUuid(), 0); 65 | totemPopMap.put(entity.getUuid(), ++pops); 66 | } 67 | } 68 | String playerName; 69 | @EventHandler 70 | private void onTick(TickEvent.Post event) { 71 | synchronized (totemPopMap) { 72 | for (PlayerEntity player : mc.world.getPlayers()) { 73 | if (!totemPopMap.containsKey(player.getUuid())) continue; 74 | if (player.deathTime > 0 || player.getHealth() <= 0) { 75 | int pops = totemPopMap.removeInt(player.getUuid()); 76 | String text = messages.get(); 77 | ChatUtils.sendPlayerMsg("EZZZZ" + playerName + "NOOB"); 78 | chatIdMap.removeInt(player.getUuid()); 79 | } 80 | } 81 | } 82 | } 83 | 84 | private int getChatId(Entity entity) { 85 | return chatIdMap.computeIfAbsent(entity.getUuid(), value -> random.nextInt()); 86 | } 87 | } 88 | */ 89 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/chat/AutoLogin.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.chat; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.game.GameLeftEvent; 5 | import meteordevelopment.meteorclient.events.world.TickEvent; 6 | import meteordevelopment.meteorclient.settings.*; 7 | import meteordevelopment.meteorclient.systems.modules.Module; 8 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 9 | import meteordevelopment.orbit.EventHandler; 10 | 11 | public class AutoLogin extends Module { 12 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 13 | 14 | private final Setting loginCommand = sgGeneral.add(new StringSetting.Builder() 15 | .name("login-command") 16 | .description("Command to login.") 17 | .defaultValue("login 1234") 18 | .build() 19 | ); 20 | 21 | private final Setting serverOnly = sgGeneral.add(new BoolSetting.Builder() 22 | .name("server-only") 23 | .description("Use Auto Login only on server.") 24 | .defaultValue(true) 25 | .build() 26 | ); 27 | 28 | private final Setting delay = sgGeneral.add(new IntSetting.Builder() 29 | .name("delay") 30 | .description("Delay before send command in ticks (20 ticks = 1 sec).") 31 | .defaultValue(20) 32 | .range(1, 120) 33 | .sliderRange(1, 40) 34 | .build() 35 | ); 36 | 37 | boolean work; 38 | private int timer; 39 | 40 | public AutoLogin() { 41 | super(Addon.chat, "auto-login", "Automatically logs in your account."); 42 | } 43 | 44 | @Override 45 | public void onActivate() { 46 | timer = 0; 47 | work = true; 48 | } 49 | 50 | @EventHandler 51 | private void onTick(TickEvent.Post event) { 52 | if (serverOnly.get() && mc.getServer() != null && mc.getServer().isSingleplayer()) return; 53 | if (timer >= delay.get() && !loginCommand.get().isEmpty() && work) { 54 | work = false; 55 | ChatUtils.sendPlayerMsg(loginCommand.get().replace("/", "")); 56 | timer = 0; 57 | } else timer ++; 58 | } 59 | 60 | @EventHandler 61 | private void onGameLeft(GameLeftEvent event) { 62 | work = true; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/chat/SpamInChat.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.chat; 2 | 3 | import bebra.hack.addon.Addon; 4 | import com.google.common.collect.Lists; 5 | import meteordevelopment.meteorclient.events.world.TickEvent; 6 | import meteordevelopment.meteorclient.settings.EnumSetting; 7 | import meteordevelopment.meteorclient.settings.IntSetting; 8 | import meteordevelopment.meteorclient.settings.Setting; 9 | import meteordevelopment.meteorclient.settings.SettingGroup; 10 | import meteordevelopment.meteorclient.systems.modules.Module; 11 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 12 | import meteordevelopment.orbit.EventHandler; 13 | import net.fabricmc.api.EnvType; 14 | import net.fabricmc.api.Environment; 15 | 16 | import java.util.List; 17 | 18 | @Environment(EnvType.CLIENT) 19 | public class SpamInChat extends Module { 20 | public enum Text { 21 | new_Rap_by_Minerica 22 | } 23 | 24 | private final SettingGroup sgGeneral = this.settings.getDefaultGroup(); 25 | 26 | private final Setting> text = sgGeneral.add(new EnumSetting.Builder>() 27 | .name("text") 28 | .defaultValue(Text.new_Rap_by_Minerica) 29 | .onChanged(e -> messageI = 0) 30 | .build() 31 | ); 32 | 33 | private final Setting delay = sgGeneral.add(new IntSetting.Builder() 34 | .name("delay") 35 | .description("The delay between specified messages in ticks.") 36 | .defaultValue(20) 37 | .min(0) 38 | .sliderMax(200) 39 | .build() 40 | ); 41 | 42 | private int messageI, timer; 43 | 44 | public SpamInChat() { 45 | super(Addon.chat, "SpamInChat", "Better than spam."); 46 | } 47 | 48 | @Override 49 | public void onActivate() { 50 | timer = delay.get(); 51 | messageI = 0; 52 | } 53 | 54 | @EventHandler 55 | private void onTick(TickEvent.Post event) { 56 | if (timer <= 0) { 57 | String line = ""; 58 | if (text.get().equals(Text.new_Rap_by_Minerica)) line = new_Rap_by_Minerica.get(messageI); 59 | ChatUtils.sendPlayerMsg (line); 60 | timer = delay.get(); 61 | if ((text.get().equals(Text.new_Rap_by_Minerica) && messageI++ == new_Rap_by_Minerica.size() - 1)) { 62 | messageI = 0; 63 | } 64 | } else { 65 | timer--; 66 | } 67 | } 68 | /* Я ПОМНЮ ПЕНИС БОЛЬШОЙ */ 69 | private static final List new_Rap_by_Minerica = Lists.newArrayList( 70 | "ей ей ей йоу реп новый", 71 | "насрал в гуся", 72 | "насрал в рот пеликану", 73 | "йоу йоу Я ебал птиц на птицеферме", 74 | "это очень хорошо", 75 | "йоу йоу ееее." 76 | 77 | ); 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/chat/bebra_info_and_help.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.chat; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.systems.modules.Module; 5 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 6 | import net.minecraft.text.Text; 7 | 8 | public class bebra_info_and_help extends Module { 9 | public bebra_info_and_help() { 10 | super(Addon.chat, "BEBRA", "Authors: Fucking slaves#7603 , MrFiNka#8113"); 11 | } 12 | @Override 13 | public void onActivate (){ 14 | ChatUtils.sendMsg(Text.of("Authors: Fucking slaves#7603 , MrFiNka#8113 , Cahekska#9358")); 15 | ChatUtils.sendMsg(Text.of("BebraHack is a free addon for the meteor client for version 1.19.4")); 16 | ChatUtils.sendMsg(Text.of("Eu: if you have a question about the addon, then go to the discord server of the addon and call me in private messages. My nickname - jabronyyy https://discord.gg/8zpzhvq3U7 / Ru: по вопросам пишите мне в дс, ник - jabronyyy, найти можно в дс бебрахака (ссылка выше)")); 17 | try { 18 | String url = "https://github.com/BebraHack/BebraHackAddon"; 19 | java.awt.Desktop.getDesktop().browse(java.net.URI.create(url)); 20 | } catch (java.io.IOException e) { 21 | System.out.println(e.getMessage()); 22 | } 23 | toggle(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pve/AutoCraft.java: -------------------------------------------------------------------------------- 1 | /*package bebra.hack.addon.modules.pve; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.BoolSetting; 6 | import meteordevelopment.meteorclient.settings.ItemListSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.orbit.EventHandler; 11 | import net.minecraft.client.gui.screen.recipebook.RecipeResultCollection; 12 | import net.minecraft.item.Item; 13 | import net.minecraft.recipe.Recipe; 14 | import net.minecraft.registry.DynamicRegistryManager; 15 | import net.minecraft.screen.CraftingScreenHandler; 16 | import net.minecraft.screen.slot.SlotActionType; 17 | 18 | import java.util.Arrays; 19 | import java.util.List; 20 | 21 | public class AutoCraft extends Module { 22 | 23 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 24 | 25 | private final Setting> items = sgGeneral.add(new ItemListSetting.Builder() 26 | .name("items") 27 | .description("Items you want to get crafted.") 28 | .defaultValue(Arrays.asList()) 29 | .build() 30 | ); 31 | 32 | private final Setting antiDesync = sgGeneral.add(new BoolSetting.Builder() 33 | .name("anti-desync") 34 | .description("Try to prevent inventory desync.") 35 | .defaultValue(false) 36 | .build() 37 | ); 38 | 39 | private final Setting craftAll = sgGeneral.add(new BoolSetting.Builder() 40 | .name("craft-all") 41 | .description("Crafts maximum possible amount amount per craft (shift-clicking)") 42 | .defaultValue(false) 43 | .build() 44 | ); 45 | 46 | private final Setting drop = sgGeneral.add(new BoolSetting.Builder() 47 | .name("drop") 48 | .description("Automatically drops crafted items (useful for when not enough inventory space)") 49 | .defaultValue(false) 50 | .build() 51 | ); 52 | 53 | public AutoCraft() { 54 | super(Addon.misc, "auto-craft", "Automatically crafts items."); 55 | } 56 | 57 | @EventHandler 58 | private void onTick(TickEvent.Post event) { 59 | if (mc.interactionManager == null) return; 60 | if (items.get().isEmpty()) return; 61 | 62 | if (!(mc.player.currentScreenHandler instanceof CraftingScreenHandler)) return; 63 | 64 | 65 | if (antiDesync.get()) 66 | mc.player.getInventory().updateItems(); 67 | 68 | CraftingScreenHandler currentScreenHandler = (CraftingScreenHandler) mc.player.currentScreenHandler; 69 | List itemList = items.get(); 70 | List recipeResultCollectionList = mc.player.getRecipeBook().getOrderedResults(); 71 | for (RecipeResultCollection recipeResultCollection : recipeResultCollectionList) { 72 | for (Recipe recipe : recipeResultCollection.getRecipes(true)) { 73 | if (!itemList.contains(recipe.getOutput((DynamicRegistryManager) mc.world.getRecipeManager()).getItem())) continue; 74 | mc.interactionManager.clickRecipe(currentScreenHandler.syncId, recipe, craftAll.get()); 75 | mc.interactionManager.clickSlot(currentScreenHandler.syncId, 0, 1, 76 | drop.get() ? SlotActionType.THROW : SlotActionType.QUICK_MOVE, mc.player); 77 | } 78 | } 79 | } 80 | } 81 | */ //minecraft dead :( 82 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pve/AutoDrop.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pve; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.*; 6 | import meteordevelopment.meteorclient.systems.modules.Module; 7 | import net.minecraft.item.*; 8 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 9 | 10 | import meteordevelopment.orbit.EventHandler; 11 | 12 | public class AutoDrop extends Module { 13 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 14 | 15 | private final Setting tool = sgGeneral.add(new BoolSetting.Builder() 16 | .name("No Throw Tools") 17 | .description("No Throw tools") 18 | .defaultValue(false) 19 | .build() 20 | ); 21 | 22 | private final Setting dropthisslot = sgGeneral.add(new BoolSetting.Builder() 23 | .name("SpecifySlotToDrop") 24 | .description("Specifies the slot to drop.") 25 | .defaultValue(false) 26 | .build() 27 | ); 28 | 29 | private final Setting dropslot = sgGeneral.add(new IntSetting.Builder() 30 | .name("DrotSlot#") 31 | .description("Drops this Slot if items are in it.") 32 | .sliderRange(1,9) 33 | .min(1) 34 | .max(9) 35 | .defaultValue(1) 36 | .visible(() -> dropthisslot.get()) 37 | .build()); 38 | 39 | public AutoDrop() {super(Addon.misc, "auto-drop", "Drops the stack in your selected slot automatically");} 40 | private int previousslot=0; 41 | private boolean getprevslot=false; 42 | 43 | @EventHandler 44 | private void onPreTick(TickEvent.Pre event) { 45 | if (tool.get() == true && (mc.player.getMainHandStack().getItem() instanceof BucketItem || mc.player.getMainHandStack().getItem() instanceof FlintAndSteelItem || mc.player.getMainHandStack().getItem() instanceof ToolItem || mc.player.getMainHandStack().getItem() instanceof ShearsItem))return; 46 | if (dropthisslot.get() && !mc.player.getInventory().getStack(dropslot.get()-1).isEmpty()){ 47 | previousslot=mc.player.getInventory().selectedSlot; 48 | mc.player.getInventory().selectedSlot = dropslot.get()-1; 49 | getprevslot=true; 50 | }else if (!dropthisslot.get()) mc.player.dropSelectedItem(true); 51 | } 52 | @EventHandler 53 | private void onPostTick(TickEvent.Post event) { 54 | if (getprevslot==true){ 55 | mc.player.dropSelectedItem(true); 56 | mc.player.getInventory().selectedSlot = previousslot; 57 | getprevslot=false; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pve/Chests_farmer.java: -------------------------------------------------------------------------------- 1 | //код взята из аддона bedtrap https://discord.gg/Grjwt77E 2 | package bebra.hack.addon.modules.pve; 3 | 4 | import bebra.hack.addon.Addon; 5 | import bebra.hack.addon.Utils.Task; 6 | import meteordevelopment.meteorclient.events.world.TickEvent; 7 | import meteordevelopment.meteorclient.systems.modules.Module; 8 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 9 | import meteordevelopment.meteorclient.utils.Utils; 10 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 11 | import meteordevelopment.meteorclient.utils.player.InvUtils; 12 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 13 | import meteordevelopment.orbit.EventHandler; 14 | import net.minecraft.block.entity.BlockEntity; 15 | import net.minecraft.block.entity.ChestBlockEntity; 16 | import net.minecraft.item.Items; 17 | import net.minecraft.util.math.BlockPos; 18 | 19 | import java.util.ArrayList; 20 | import java.util.Comparator; 21 | 22 | import static bebra.hack.addon.Utils.BlockInfo.*; 23 | import static bebra.hack.addon.Utils.EntityInfo.getBlockPos; 24 | 25 | public class Chests_farmer extends Module { 26 | //private final SettingGroup sgGeneral = settings.getDefaultGroup(); 27 | 28 | public Chests_farmer() { 29 | super(Addon.misc, "Chests Farm", "auto farm chests."); 30 | } 31 | private FindItemResult axe; 32 | private BlockPos pos; 33 | private int x,y,z; 34 | private Stage stage; 35 | 36 | private final Task chatTask = new Task(); 37 | 38 | @Override 39 | public void onActivate() { 40 | stage = Stage.Find; 41 | 42 | chatTask.reset(); 43 | pos = null; 44 | } 45 | 46 | @Override 47 | public void onDeactivate() { 48 | ChatUtils.sendPlayerMsg("#stop"); 49 | } 50 | 51 | @EventHandler 52 | public void onTick(TickEvent.Pre event) { 53 | axe = InvUtils.find(itemStack -> itemStack.getItem() == Items.NETHERITE_AXE || itemStack.getItem() == Items.DIAMOND_AXE); 54 | 55 | switch (stage) { 56 | case Find -> { 57 | pos = findChests(); 58 | 59 | if (pos == null) { 60 | chatTask.reset(); 61 | stage = Stage.Stuck; 62 | info("There's no chests in your view distance."); 63 | toggle(); 64 | return; 65 | } 66 | 67 | x = pos.getX(); 68 | y = pos.getY(); 69 | z = pos.getZ(); 70 | 71 | chatTask.reset(); 72 | stage = Stage.Move; 73 | } 74 | case Move -> { 75 | chatTask.run(() -> ChatUtils.sendPlayerMsg("#goto " + x + " " + y + " " + z)); 76 | 77 | if (getBlockPos(mc.player).equals(pos)) stage = Stage.Reset; 78 | } 79 | case Reset -> { 80 | chatTask.reset(); 81 | 82 | stage = Stage.Find; 83 | } 84 | case Stuck -> { 85 | if (findChests() != null) stage = Stage.Find; 86 | else chatTask.run(() -> ChatUtils.sendPlayerMsg("#goto " + getDirection().getX() + " " + y + " " + getDirection().getZ())); 87 | } 88 | } 89 | } 90 | private BlockPos getDirection() { 91 | int x = X(mc.player.getBlockPos()); 92 | int y = Y(mc.player.getBlockPos()); 93 | int z = Z(mc.player.getBlockPos()); 94 | 95 | if (x > 0) x = 30000000; 96 | else x = -30000000; 97 | 98 | if (y > 0) y = 30000000; 99 | else y = -30000000; 100 | 101 | return new BlockPos(x,y,z); 102 | } 103 | 104 | private BlockPos findChests() { 105 | ArrayList pos = new ArrayList<>(); 106 | 107 | for (BlockEntity entity : Utils.blockEntities()) { 108 | if (entity instanceof ChestBlockEntity chestBlock) { 109 | if (!pos.contains(chestBlock.getPos())) pos.add(chestBlock.getPos()); 110 | } 111 | } 112 | 113 | if (pos.isEmpty()) return null; 114 | 115 | pos.sort(Comparator.comparingDouble(PlayerUtils::distanceTo)); 116 | return pos.get(0); 117 | } 118 | 119 | public enum Stage { 120 | Find, 121 | Move, 122 | Reset, 123 | Stuck 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pve/NoDesync.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pve; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.entity.player.BreakBlockEvent; 5 | import meteordevelopment.meteorclient.events.entity.player.InteractBlockEvent; 6 | import meteordevelopment.meteorclient.settings.BoolSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.orbit.EventHandler; 11 | import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket; 12 | import net.minecraft.util.math.BlockPos; 13 | import net.minecraft.util.math.Direction; 14 | 15 | public class NoDesync extends Module { 16 | 17 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 18 | 19 | private final Setting breakBlock = sgGeneral.add(new BoolSetting.Builder().name("break").description("Anti-desync for block breaking.").defaultValue(true).build()); 20 | private final Setting placeBlock = sgGeneral.add(new BoolSetting.Builder().name("place").description("Anti-desync for block placing.").defaultValue(true).build()); 21 | 22 | public NoDesync() { 23 | super(Addon.misc, "no-desync", "Prevent ghost block placements."); 24 | } 25 | 26 | 27 | @EventHandler 28 | private void onBlockPlace(InteractBlockEvent event) { 29 | if (!placeBlock.get()) return; 30 | BlockPos placePos = event.result.getBlockPos(); 31 | if (placePos != null) mc.player.networkHandler.sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, placePos, Direction.UP)); 32 | } 33 | 34 | @EventHandler 35 | private void onBlockBreak(BreakBlockEvent event) { 36 | if (!breakBlock.get()) return; 37 | BlockPos breakPos = event.blockPos; 38 | if (breakPos != null) mc.player.networkHandler.sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, breakPos, Direction.UP)); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pve/Spinner.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pve; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.BoolSetting; 6 | import meteordevelopment.meteorclient.settings.IntSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.meteorclient.utils.player.Rotations; 11 | import meteordevelopment.orbit.EventHandler; 12 | import net.minecraft.item.Items; 13 | 14 | public class Spinner extends Module { 15 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 16 | private final Setting b = sgGeneral.add(new IntSetting.Builder().name("speed").description("The speed at which you rotate.").defaultValue(5).min(0).sliderMax(100).build()); 17 | private final Setting c = sgGeneral.add(new BoolSetting.Builder().name("pauseItems").description("Stop rotate when you use some pvp items.").defaultValue(true).build()); 18 | 19 | private short a = 0; 20 | 21 | public Spinner() { 22 | super(Addon.misc, "spinner", "very very very very very fast spin / max speed 180"); 23 | } 24 | 25 | @EventHandler 26 | public void onTick(TickEvent.Post post) { 27 | if (!c.get() || mc.player.getMainHandStack().getItem() != Items.EXPERIENCE_BOTTLE && mc.player.getMainHandStack().getItem() != Items.ENDER_PEARL && mc.player.getOffHandStack().getItem() != Items.EXPERIENCE_BOTTLE && mc.player.getOffHandStack().getItem() != Items.ENDER_PEARL && mc.player.getMainHandStack().getItem() != Items.OBSIDIAN && mc.player.getMainHandStack().getItem() != Items.NETHERITE_SWORD && mc.player.getMainHandStack().getItem() != Items.NETHERITE_PICKAXE && mc.player.getMainHandStack().getItem() != Items.END_CRYSTAL && mc.player.getMainHandStack().getItem() != Items.STONE_BUTTON && mc.player.getMainHandStack().getItem() != Items.ANVIL && mc.player.getMainHandStack().getItem() != Items.CHIPPED_ANVIL && mc.player.getMainHandStack().getItem() != Items.DAMAGED_ANVIL && mc.player.getMainHandStack().getItem() != Items.BOW && mc.player.getMainHandStack().getItem() != Items.TNT && mc.player.getMainHandStack().getItem() != Items.FLINT) { 28 | a = (short) (a + b.get()); 29 | if (a > 180) { 30 | a = -180; 31 | } 32 | 33 | Rotations.rotate(a, 0.0D); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pve/Twerk.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pve; 2 | 3 | import bebra.hack.addon.Addon; 4 | import bebra.hack.addon.Utils.TimerUtilsbanana; 5 | import meteordevelopment.meteorclient.events.world.TickEvent; 6 | import meteordevelopment.meteorclient.settings.DoubleSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.orbit.EventHandler; 11 | 12 | //Я помню. Я помню пенис большой// 13 | // Я помню пенис большой // 14 | // Я помню пенис большой // 15 | // Я помню у-о-о. Я знаю пенис большой // 16 | // Я знаю пенис большой // 17 | // Я помню пенис большой // 18 | // Я помню пенис большо-у-о-у-о-у-о// 19 | 20 | public class Twerk extends Module { 21 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 22 | 23 | 24 | // General 25 | private final Setting twerkDelay = (Setting) sgGeneral.add(new DoubleSetting.Builder() 26 | .name("Twerk Delay") 27 | .description("In Millis.") 28 | .defaultValue(4) 29 | .min(1) 30 | .sliderRange(2,100) 31 | .build() 32 | ); 33 | 34 | 35 | public Twerk() { 36 | super(Addon.misc, "twerk", "Twerk like the true queen Miley Cyrus."); 37 | } 38 | 39 | 40 | private boolean upp = false; 41 | private final bebra.hack.addon.Utils.TimerUtilsbanana onTwerk = new TimerUtilsbanana(); 42 | 43 | 44 | @EventHandler 45 | private void onTick(TickEvent.Pre event) { 46 | mc.options.sneakKey.setPressed(upp); 47 | 48 | if (onTwerk.passedMillis(twerkDelay.get().longValue()) && !upp) { 49 | onTwerk.reset(); 50 | upp = true; 51 | } 52 | 53 | if (onTwerk.passedMillis(twerkDelay.get().longValue()) && upp) { 54 | onTwerk.reset(); 55 | upp = false; 56 | } 57 | 58 | } 59 | 60 | @Override 61 | public void onDeactivate() { 62 | upp = false; 63 | mc.options.sneakKey.setPressed(false); 64 | onTwerk.reset(); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pvp/AntiCrystal.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pvp; 2 | 3 | import bebra.hack.addon.Addon; 4 | import com.google.common.collect.Streams; 5 | import meteordevelopment.orbit.EventHandler; 6 | import meteordevelopment.meteorclient.events.world.TickEvent; 7 | import meteordevelopment.meteorclient.systems.modules.Module; 8 | import meteordevelopment.meteorclient.settings.BoolSetting; 9 | import meteordevelopment.meteorclient.settings.DoubleSetting; 10 | import meteordevelopment.meteorclient.settings.EnumSetting; 11 | import meteordevelopment.meteorclient.settings.Setting; 12 | import meteordevelopment.meteorclient.settings.SettingGroup; 13 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 14 | import meteordevelopment.meteorclient.utils.player.InvUtils; 15 | import meteordevelopment.meteorclient.utils.world.BlockUtils; 16 | 17 | import net.minecraft.entity.decoration.EndCrystalEntity; 18 | import net.minecraft.item.Item; 19 | import net.minecraft.item.Items; 20 | 21 | 22 | import java.util.Comparator; 23 | import java.util.Optional; 24 | 25 | public class AntiCrystal extends Module { 26 | 27 | public enum Mode { 28 | PressurePlate, 29 | Button 30 | } 31 | 32 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 33 | 34 | private final Setting mode = sgGeneral.add(new EnumSetting.Builder() 35 | .name("mode") 36 | .description("The mode at which AntiCrystal operates.") 37 | .defaultValue(Mode.PressurePlate) 38 | .build() 39 | ); 40 | 41 | private final Setting range = sgGeneral.add(new DoubleSetting.Builder() 42 | .name("range") 43 | .description("The range to place Pressure Plates/Buttons.") 44 | .min(1) 45 | .max(10) 46 | .defaultValue(1) 47 | .build() 48 | ); 49 | 50 | private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() 51 | .name("rotate") 52 | .description("Rotate.") 53 | .defaultValue(true) 54 | .build() 55 | ); 56 | 57 | public AntiCrystal() { 58 | super(Addon.combat, "anti-crystal", "Stops End Crystals from doing damage to you."); 59 | } 60 | 61 | private static final Item[] BUTTONS = { Items.ACACIA_BUTTON, Items.BIRCH_BUTTON, Items.CRIMSON_BUTTON, Items.DARK_OAK_BUTTON, Items.JUNGLE_BUTTON, Items.OAK_BUTTON, Items.POLISHED_BLACKSTONE_BUTTON, Items.SPRUCE_BUTTON, Items.STONE_BUTTON, Items.WARPED_BUTTON }; 62 | private static final Item[] PLATES = { Items.ACACIA_PRESSURE_PLATE, Items.BIRCH_PRESSURE_PLATE, Items.CRIMSON_PRESSURE_PLATE, Items.DARK_OAK_PRESSURE_PLATE, Items.JUNGLE_PRESSURE_PLATE, Items.OAK_PRESSURE_PLATE, Items.POLISHED_BLACKSTONE_PRESSURE_PLATE, Items.SPRUCE_PRESSURE_PLATE, Items.STONE_PRESSURE_PLATE, Items.WARPED_PRESSURE_PLATE}; 63 | 64 | @EventHandler 65 | private void onTick(TickEvent.Post event) { 66 | assert mc.world != null; 67 | assert mc.player != null; 68 | 69 | Optional crystalTarget = Streams.stream(mc.world.getEntities()) 70 | .filter(e -> (e instanceof EndCrystalEntity)) 71 | .filter(e -> e.distanceTo(mc.player) <= range.get() * 2) 72 | .filter(e -> mc.world.getBlockState(e.getBlockPos()).isAir()) 73 | .min(Comparator.comparingDouble(o -> o.distanceTo(mc.player))) 74 | .map(e -> (EndCrystalEntity) e); 75 | 76 | crystalTarget.ifPresent(crystal -> { 77 | 78 | if (mode.get() == Mode.PressurePlate) { 79 | FindItemResult result = InvUtils.find(PLATES); 80 | if (!result.found()) return; 81 | BlockUtils.place(crystal.getBlockPos(), result, rotate.get(), 100); 82 | } else if (mode.get() == Mode.Button) { 83 | FindItemResult result = InvUtils.find(BUTTONS); 84 | if (!result.found()) return; 85 | BlockUtils.place(crystal.getBlockPos(), result, rotate.get(), 100); 86 | } 87 | }); 88 | 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pvp/AntiSurroundBlocks.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pvp; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.*; 6 | import meteordevelopment.meteorclient.systems.modules.Module; 7 | import meteordevelopment.meteorclient.utils.entity.SortPriority; 8 | import meteordevelopment.meteorclient.utils.entity.TargetUtils; 9 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 10 | import meteordevelopment.meteorclient.utils.player.InvUtils; 11 | import meteordevelopment.meteorclient.utils.world.BlockUtils; 12 | import meteordevelopment.orbit.EventHandler; 13 | import net.minecraft.entity.player.PlayerEntity; 14 | import net.minecraft.item.Items; 15 | import net.minecraft.util.math.BlockPos; 16 | import net.minecraft.util.math.Direction; 17 | 18 | public class AntiSurroundBlocks extends Module { 19 | public enum Mode {Button, Web, Lever, Glass, String} 20 | 21 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 22 | private final SettingGroup sgMode = settings.createGroup("Mode"); 23 | 24 | private final Setting range = sgGeneral.add(new DoubleSetting.Builder().name("Range").description("The maximum distance to target players/place range.").defaultValue(4).range(0, 5).sliderMax(5).build()); 25 | private final Setting rotate = sgGeneral.add(new BoolSetting.Builder().name("Rotate").description("Rotates when placing.").defaultValue(true).build()); 26 | private final Setting disable = sgGeneral.add(new BoolSetting.Builder().name("AutoDisable").description("Disabling after place.").defaultValue(true).build()); 27 | //private final Setting support = sgGeneral.add(new BoolSetting.Builder().name("Support").description("PLacing Obsidian in bottom.").defaultValue(false).build()); 28 | //modes 29 | public final Setting mode = sgMode.add(new EnumSetting.Builder().name("Mode").description("AntiSurroundBlocks mode.").defaultValue(AntiSurroundBlocks.Mode.Button).build()); 30 | //render 31 | 32 | private PlayerEntity target; 33 | private FindItemResult item; 34 | private BlockPos pos; 35 | 36 | 37 | public AntiSurroundBlocks() { 38 | super(Addon.combat, "AntiSurroundBlocks", "Automatically trying to fuck players surround."); 39 | } 40 | 41 | @Override 42 | public void onActivate() { 43 | target = null; 44 | pos = null; 45 | } 46 | 47 | @EventHandler 48 | private void onTick(TickEvent.Pre event) { 49 | target = TargetUtils.getPlayerTarget(range.get(), SortPriority.LowestDistance); 50 | if (target == null) return; 51 | pos = target.getBlockPos(); 52 | switch (mode.get()) { 53 | case Button -> item = InvUtils.findInHotbar(Items.CRIMSON_BUTTON); 54 | case Web -> item = InvUtils.findInHotbar(Items.COBWEB); 55 | case Glass -> item = InvUtils.findInHotbar(Items.GLASS_PANE); 56 | case Lever -> item = InvUtils.findInHotbar(Items.LEVER); 57 | case String -> item = InvUtils.findInHotbar(Items.STRING); 58 | } 59 | /* 60 | if (support.get()) { 61 | doPlace(target.getBlockPos().down(), InvUtils.findInHotbar(Items.OBSIDIAN)); 62 | } 63 | */ 64 | 65 | for (Direction dir : Direction.values()) { 66 | if (dir == Direction.DOWN || dir == Direction.UP) continue; 67 | boolean canPlace = BlockUtils.canPlace(pos.offset(dir)); 68 | if (canPlace) { 69 | doPlace(target.getBlockPos(), item); 70 | if (disable.get()) { 71 | toggle(); 72 | } 73 | return; 74 | } 75 | } 76 | } 77 | 78 | private void doPlace(BlockPos blockPos, FindItemResult findItemResult) { 79 | if (mode.get().equals(Mode.Button) || mode.get().equals(Mode.Web) || mode.get().equals(Mode.Glass) || mode.get().equals(Mode.String)) { 80 | for (Direction dir : Direction.values()) { 81 | if (dir == Direction.DOWN || dir == Direction.UP) continue; 82 | BlockUtils.place(pos.offset(dir), item, rotate.get(), 0); 83 | } 84 | } else { 85 | for (Direction dir : Direction.values()) { 86 | if (dir == Direction.DOWN || dir == Direction.UP) continue; 87 | BlockUtils.place(pos.offset(dir).down(), item, rotate.get(), 0); 88 | } 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pvp/AutoSand.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pvp; 2 | //created by jabronyyy 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.*; 6 | import meteordevelopment.meteorclient.systems.modules.Module; 7 | import meteordevelopment.meteorclient.utils.entity.SortPriority; 8 | import meteordevelopment.meteorclient.utils.entity.TargetUtils; 9 | import meteordevelopment.meteorclient.utils.player.InvUtils; 10 | import meteordevelopment.meteorclient.utils.world.BlockUtils; 11 | import meteordevelopment.orbit.EventHandler; 12 | import net.minecraft.block.BlockState; 13 | import net.minecraft.entity.player.PlayerEntity; 14 | import net.minecraft.item.Items; 15 | import meteordevelopment.meteorclient.settings.BoolSetting; 16 | import meteordevelopment.meteorclient.settings.EnumSetting; 17 | import meteordevelopment.meteorclient.settings.Setting; 18 | import meteordevelopment.meteorclient.settings.SettingGroup; 19 | 20 | 21 | public class AutoSand extends Module { 22 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 23 | 24 | private final Setting range = sgGeneral.add(new DoubleSetting.Builder() 25 | .name("target-range") 26 | .description("The maximum distance to target players.") 27 | .defaultValue(4) 28 | .range(0, 5) 29 | .sliderMax(5) 30 | .build() 31 | ); 32 | 33 | private final Setting priority = sgGeneral.add(new EnumSetting.Builder() 34 | .name("target-priority") 35 | .description("How to filter targets within range.") 36 | .defaultValue(SortPriority.LowestDistance) 37 | .build() 38 | ); 39 | private final Setting PlaceSand = sgGeneral.add(new BoolSetting.Builder() 40 | .name("Putting sand") 41 | .description("Puts sands on head.") 42 | .defaultValue(false) 43 | .build() 44 | ); 45 | private final Setting PlaceObsidian = sgGeneral.add(new BoolSetting.Builder() 46 | .name("Putting obsidian") 47 | .description("Puts obsidians.") 48 | .defaultValue(false) 49 | .build() 50 | ); 51 | 52 | private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() 53 | .name("rotate") 54 | .description("Rotates towards the sands when placing.") 55 | .defaultValue(true) 56 | .build() 57 | ); 58 | 59 | private PlayerEntity target = null; 60 | 61 | public AutoSand() { 62 | super(Addon.combat, "AutoSand", "Automatically places sands to your opponent (rofl module)."); 63 | } 64 | 65 | @EventHandler 66 | private void onTick(TickEvent.Pre event) { 67 | if (TargetUtils.isBadTarget(target, range.get())) { 68 | target = TargetUtils.getPlayerTarget(range.get(), priority.get()); 69 | if (TargetUtils.isBadTarget(target, range.get())) return; 70 | } 71 | 72 | if (PlaceObsidian.get()) { 73 | BlockUtils.place(target.getBlockPos().add(1, 1, 0), InvUtils.findInHotbar(Items.OBSIDIAN), rotate.get(), 0, false); 74 | BlockUtils.place(target.getBlockPos().add(0, 1, 1), InvUtils.findInHotbar(Items.OBSIDIAN), rotate.get(), 0, false); 75 | BlockUtils.place(target.getBlockPos().add(-1, 1, 0), InvUtils.findInHotbar(Items.OBSIDIAN), rotate.get(), 0, false); 76 | BlockUtils.place(target.getBlockPos().add(0, 1, -1), InvUtils.findInHotbar(Items.OBSIDIAN), rotate.get(), 0, false); 77 | BlockUtils.place(target.getBlockPos().add(0, 3, 0), InvUtils.findInHotbar(Items.OBSIDIAN), rotate.get(), 0, false); 78 | } 79 | if (PlaceSand.get()) { 80 | BlockUtils.place(target.getBlockPos().add(0, 2, 0), InvUtils.findInHotbar(Items.SAND), rotate.get(), 0, false); 81 | } 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pvp/AutoTrapPlus.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pvp; 2 | //created by jabronyyy 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.*; 6 | import meteordevelopment.meteorclient.systems.modules.Module; 7 | import meteordevelopment.meteorclient.utils.entity.SortPriority; 8 | import meteordevelopment.meteorclient.utils.entity.TargetUtils; 9 | import meteordevelopment.meteorclient.utils.player.InvUtils; 10 | import meteordevelopment.meteorclient.utils.world.BlockUtils; 11 | import meteordevelopment.orbit.EventHandler; 12 | import net.minecraft.entity.player.PlayerEntity; 13 | import net.minecraft.item.Items; 14 | 15 | public class AutoTrapPlus extends Module { 16 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 17 | 18 | private final Setting range = sgGeneral.add(new DoubleSetting.Builder() 19 | .name("target-range") 20 | .description("The maximum distance to target players.") 21 | .defaultValue(5) 22 | .range(0, 6) 23 | .sliderMax(6) 24 | .build() 25 | ); 26 | 27 | private final Setting priority = sgGeneral.add(new EnumSetting.Builder() 28 | .name("target-priority") 29 | .description("How to filter targets within range.") 30 | .defaultValue(SortPriority.LowestDistance) 31 | .build() 32 | ); 33 | private final Setting dont_click_here = sgGeneral.add(new BoolSetting.Builder() 34 | .name("dont_click_here") 35 | .description("dont_click_here.") 36 | .defaultValue(true) 37 | .build() 38 | ); 39 | private final Setting AntiSurround = sgGeneral.add(new BoolSetting.Builder() 40 | .name("AntiSurround") 41 | .description("puts buttons") 42 | .defaultValue(false) 43 | .build() 44 | ); 45 | 46 | private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() 47 | .name("rotate") 48 | .description("Rotates towards the obsidian when placing.") 49 | .defaultValue(true) 50 | .build() 51 | ); 52 | 53 | private PlayerEntity target = null; 54 | 55 | public AutoTrapPlus() { 56 | super(Addon.combat, "AutoTrapPlus", "Automatically trap your opponent."); 57 | } 58 | 59 | @EventHandler 60 | private void onTick(TickEvent.Pre event) { 61 | if (TargetUtils.isBadTarget(target, range.get())) { 62 | target = TargetUtils.getPlayerTarget(range.get(), priority.get()); 63 | if (TargetUtils.isBadTarget(target, range.get())) return; 64 | } 65 | 66 | if (dont_click_here.get()) { 67 | BlockUtils.place(target.getBlockPos().add(1, 1, 0), InvUtils.findInHotbar(Items.OBSIDIAN), rotate.get(), 0, false); 68 | } 69 | if (dont_click_here.get()) { 70 | BlockUtils.place(target.getBlockPos().add(-1, 1, 0), InvUtils.findInHotbar(Items.OBSIDIAN), rotate.get(), 0, false); 71 | } 72 | if (dont_click_here.get()) { 73 | BlockUtils.place(target.getBlockPos().add(0, 1, 1), InvUtils.findInHotbar(Items.OBSIDIAN), rotate.get(), 0, false); 74 | } 75 | if (dont_click_here.get()) { 76 | BlockUtils.place(target.getBlockPos().add(0, 1, -1), InvUtils.findInHotbar(Items.OBSIDIAN), rotate.get(), 0, false); 77 | } 78 | if (dont_click_here.get()) { 79 | BlockUtils.place(target.getBlockPos().add(0, 2, 0), InvUtils.findInHotbar(Items.OBSIDIAN), rotate.get(), 0, false); 80 | } 81 | if (AntiSurround.get()) { 82 | BlockUtils.place(target.getBlockPos().add(1, 0, 0), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 83 | } 84 | if (AntiSurround.get()) { 85 | BlockUtils.place(target.getBlockPos().add(0, 0, 1), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 86 | } 87 | if (AntiSurround.get()) { 88 | BlockUtils.place(target.getBlockPos().add(-1, 0, 0), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 89 | } 90 | if (AntiSurround.get()) { 91 | BlockUtils.place(target.getBlockPos().add(0, 0, -1), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pvp/ButtonPlace.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pvp; 2 | //created by jabronyyy 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.*; 6 | import meteordevelopment.meteorclient.systems.modules.Module; 7 | import meteordevelopment.meteorclient.utils.entity.SortPriority; 8 | import meteordevelopment.meteorclient.utils.entity.TargetUtils; 9 | import meteordevelopment.meteorclient.utils.player.InvUtils; 10 | import meteordevelopment.meteorclient.utils.world.BlockUtils; 11 | import meteordevelopment.orbit.EventHandler; 12 | import net.minecraft.entity.player.PlayerEntity; 13 | import net.minecraft.item.Items; 14 | 15 | public class ButtonPlace extends Module { 16 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 17 | 18 | private final Setting range = sgGeneral.add(new DoubleSetting.Builder() 19 | .name("target-range") 20 | .description("The maximum distance to target players.") 21 | .defaultValue(4) 22 | .range(0, 5) 23 | .sliderMax(5) 24 | .build() 25 | ); 26 | 27 | private final Setting priority = sgGeneral.add(new EnumSetting.Builder() 28 | .name("target-priority") 29 | .description("How to filter targets within range.") 30 | .defaultValue(SortPriority.LowestDistance) 31 | .build() 32 | ); 33 | private final Setting AntiBurrow = sgGeneral.add(new BoolSetting.Builder() 34 | .name("AntiBurrow") 35 | .description("Puts buttons in the burrow.") 36 | .defaultValue(false) 37 | .build() 38 | ); 39 | 40 | private final Setting in_Surround = sgGeneral.add(new BoolSetting.Builder() 41 | .name("in Surround") 42 | .description("Puts buttons in the surround.") 43 | .defaultValue(false) 44 | .build() 45 | ); 46 | 47 | private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() 48 | .name("rotate") 49 | .description("Rotates towards the buttons when placing.") 50 | .defaultValue(true) 51 | .build() 52 | ); 53 | 54 | private PlayerEntity target = null; 55 | 56 | public ButtonPlace() { 57 | super(Addon.combat, "ButtonPlace", "Automatically places button in surround and burrow to your opponent."); 58 | } 59 | 60 | @EventHandler 61 | private void onTick(TickEvent.Pre event) { 62 | if (TargetUtils.isBadTarget(target, range.get())) { 63 | target = TargetUtils.getPlayerTarget(range.get(), priority.get()); 64 | if (TargetUtils.isBadTarget(target, range.get())) return; 65 | } 66 | 67 | //BlockUtils.place(target.getBlockPos(), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 68 | if (AntiBurrow.get()) { 69 | BlockUtils.place(target.getBlockPos().add(0, 0, 0), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 70 | } 71 | 72 | if (in_Surround.get()) { 73 | BlockUtils.place(target.getBlockPos().add(1, 0, 0), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 74 | } 75 | if (in_Surround.get()) { 76 | BlockUtils.place(target.getBlockPos().add(-1, 0, 0), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 77 | } 78 | if (in_Surround.get()) { 79 | BlockUtils.place(target.getBlockPos().add(0, 0, 1), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 80 | } 81 | if (in_Surround.get()) { 82 | BlockUtils.place(target.getBlockPos().add(0, 0, -1), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 83 | } 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pvp/DeleteItems.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pvp; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.BoolSetting; 6 | import meteordevelopment.meteorclient.settings.EnumSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 11 | import meteordevelopment.meteorclient.utils.player.InvUtils; 12 | import meteordevelopment.orbit.EventHandler; 13 | import net.minecraft.item.Items; 14 | import net.minecraft.util.Hand; 15 | 16 | //by jabronyyy 17 | public class DeleteItems extends Module { 18 | public DeleteItems() { 19 | super(Addon.combat, "Delete-Items", "In order not to give things to the enemy, turn on this function before death (you need to carry a bucket of lava with you)"); 20 | } 21 | 22 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 23 | private final Setting itemUse = sgGeneral.add(new EnumSetting.Builder().name("item").defaultValue(Item.Lava).build()); 24 | private final Setting notify = sgGeneral.add(new BoolSetting.Builder().name("notify").defaultValue(true).build()); 25 | 26 | private int mainSlot; 27 | private boolean invMove; 28 | 29 | @Override 30 | public void onActivate(){ 31 | invMove = false; 32 | mainSlot = mc.player.getInventory().selectedSlot; 33 | } 34 | 35 | @Override 36 | public void onDeactivate(){ 37 | invMove = false; 38 | mainSlot = -1; 39 | } 40 | 41 | @EventHandler 42 | private void onTickEvent(TickEvent.Pre event) { 43 | FindItemResult fP = InvUtils.find(Items.LAVA_BUCKET); 44 | if (!fP.found() && itemUse.get() == Item.Lava) toggle(); 45 | if (itemUse.get() == Item.Lava) { 46 | FindItemResult Lava = InvUtils.find(Items.LAVA_BUCKET); 47 | int LavaSlot = Lava.slot(); 48 | if (!Lava.found() && notify.get()) { 49 | info("No lava-bucket found!"); 50 | return; 51 | } 52 | InvUtils.move().from(LavaSlot).to(mainSlot); 53 | if (mc.player.getMainHandStack().getItem() == Items.LAVA_BUCKET) { 54 | mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND); 55 | invMove = true; 56 | } 57 | if (invMove) { 58 | InvUtils.move().from(mainSlot).to(LavaSlot); 59 | } 60 | toggle(); 61 | } 62 | } 63 | public enum Item { 64 | Lava, 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pvp/HitboxDesync.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pvp; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.systems.modules.Module; 5 | import meteordevelopment.meteorclient.events.world.TickEvent; 6 | import meteordevelopment.orbit.EventHandler; 7 | import net.minecraft.util.math.BlockPos; 8 | import net.minecraft.util.math.Box; 9 | import net.minecraft.util.math.Direction; 10 | import net.minecraft.util.math.Vec3d; 11 | 12 | 13 | 14 | public class HitboxDesync extends Module { 15 | private static final double MAGIC_OFFSET = .200009968835369999878673424677777777777761; 16 | 17 | public HitboxDesync() { 18 | super(Addon.combat, "HitboxDesync", "Crashes chinese crystal auras."); 19 | } 20 | 21 | @EventHandler 22 | private void onTick(TickEvent.Post event) { 23 | if (mc.world == null) return; 24 | Direction f = mc.player.getHorizontalFacing(); 25 | Box bb = mc.player.getBoundingBox(); 26 | Vec3d center = bb.getCenter(); 27 | Vec3d offset = new Vec3d(f.getUnitVector()); 28 | 29 | Vec3d fin = merge(Vec3d.of(BlockPos.ofFloored(center)).add(.5, 0, .5).add(offset.multiply(MAGIC_OFFSET)), f); 30 | mc.player.setPosition(fin.x == 0 ? mc.player.getX() : fin.x, 31 | mc.player.getY(), 32 | fin.z == 0 ? mc.player.getZ() : fin.z); 33 | toggle(); 34 | } 35 | 36 | private Vec3d merge(Vec3d a, Direction facing) { 37 | return new Vec3d(a.x * Math.abs(facing.getUnitVector().x()), a.y * Math.abs(facing.getUnitVector().y()), a.z * Math.abs(facing.getUnitVector().z())); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/pvp/SelfAnvilBEBRA.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.pvp; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.*; 6 | import meteordevelopment.meteorclient.systems.modules.Module; 7 | import meteordevelopment.meteorclient.utils.player.InvUtils; 8 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 9 | import meteordevelopment.meteorclient.utils.world.BlockUtils; 10 | import meteordevelopment.orbit.EventHandler; 11 | import net.minecraft.block.Block; 12 | import net.minecraft.block.BlockState; 13 | import net.minecraft.block.Blocks; 14 | import net.minecraft.util.math.BlockPos; 15 | import java.util.Collections; 16 | import java.util.List; 17 | 18 | public class SelfAnvilBEBRA extends Module { 19 | //private final SettingGroup sgGeneral = settings.createGroup("general"); 20 | 21 | //private final Setting oneAnvil = sgGeneral.add(new BoolSetting.Builder().name("one").description("For no airplace servers.").defaultValue(false).build()); 22 | 23 | //private final Setting NoAirPlace = sgGeneral.add(new BoolSetting.Builder().name("NoAirPlace").description("For no airplace servers.").defaultValue(false).build()); 24 | private final SettingGroup sgMisc = settings.createGroup("Misc"); 25 | 26 | private final Setting checkEntity = sgMisc.add(new BoolSetting.Builder().name("check-entity").description("entity check").defaultValue(true).build()); 27 | private final Setting center = sgMisc.add(new BoolSetting.Builder().name("center").description("Teleports you to the center of the block.").defaultValue(true).build()); 28 | 29 | //private final Setting disableOnYChange = sgMisc.add(new BoolSetting.Builder().name("disable-on-y-change").description("Automatically disables when your y level (step, jumping, atc).").defaultValue(false).build()); 30 | private final Setting rotate = sgMisc.add(new BoolSetting.Builder().name("rotate").description("Automatically faces towards the Anvil being placed.").defaultValue(false).build()); 31 | private final Setting> blocks = sgMisc.add(new BlockListSetting.Builder().name("block").description("What blocks to use for surround.").defaultValue(Collections.singletonList(Blocks.ANVIL)).filter(this::blockFilter).build()); 32 | 33 | private final BlockPos.Mutable blockPos = new BlockPos.Mutable(); 34 | private boolean return_; 35 | 36 | public SelfAnvilBEBRA() { 37 | super(Addon.combat, "AutoAnvilBEBRA", "puts in throws off anvils on you"); 38 | } 39 | 40 | @Override 41 | public void onActivate() { 42 | if (center.get()) PlayerUtils.centerPlayer(); 43 | } 44 | 45 | @EventHandler 46 | private void onTick(TickEvent.Pre event) { 47 | 48 | place(0, 2, 0); 49 | if (return_) return; 50 | } 51 | 52 | private boolean blockFilter(Block block) { 53 | return block.getBlastResistance() >= 600; 54 | } 55 | 56 | private boolean place(int x, int y, int z) { 57 | setBlockPos(x, y, z); 58 | BlockState blockState = mc.world.getBlockState(blockPos); 59 | if (!blockState.getMaterial().isReplaceable()) return true; 60 | if (BlockUtils.place(blockPos, InvUtils.findInHotbar(itemStack -> blocks.get().contains(Block.getBlockFromItem(itemStack.getItem()))), rotate.get(), 100, checkEntity.get())) { 61 | return_ = true; 62 | } 63 | return false; 64 | } 65 | 66 | private void setBlockPos(int x, int y, int z) { 67 | blockPos.set(mc.player.getX() + x, mc.player.getY() + y, mc.player.getZ() + z); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/render/Bubbles.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.render; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.render.Render3DEvent; 5 | import meteordevelopment.meteorclient.renderer.ShapeMode; 6 | import meteordevelopment.meteorclient.systems.modules.Module; 7 | import meteordevelopment.meteorclient.utils.render.RenderUtils; 8 | import meteordevelopment.meteorclient.utils.render.color.Color; 9 | import meteordevelopment.orbit.EventHandler; 10 | import net.minecraft.util.hit.BlockHitResult; 11 | import net.minecraft.util.math.BlockPos; 12 | 13 | //by red14 14 | public class Bubbles extends Module { 15 | 16 | public Bubbles() { 17 | super(Addon.render, "Bubbles", "Create bubbles on the blocks you're looking at."); 18 | } 19 | 20 | boolean savePrev; 21 | BlockPos bpp; 22 | BlockPos bp; 23 | 24 | @Override 25 | public void onActivate() { 26 | savePrev = true; 27 | } 28 | 29 | @EventHandler 30 | private void onRender(Render3DEvent event) { 31 | if (mc.crosshairTarget instanceof BlockHitResult block) { 32 | bp = block.getBlockPos(); 33 | 34 | if (savePrev) { 35 | bpp = bp; 36 | savePrev = false; 37 | } 38 | 39 | Color line = new Color(180, 0, 0, 255); 40 | Color side = new Color(225, 0, 0, 50); 41 | ShapeMode sm = ShapeMode.Both; 42 | 43 | event.renderer.box(bp, side, line, sm, 0); 44 | 45 | if (bpp.getX() != bp.getX() || bpp.getZ() != bp.getZ() || bpp.getY() != bp.getY()) { 46 | RenderUtils.renderTickingBlock(bpp, new Color(225, 0, 0, 50), line, sm, 0, 12, false, true); 47 | savePrev = true; 48 | } 49 | } 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/render/Bubbles2.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.render; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.systems.modules.Module; 5 | 6 | import meteordevelopment.meteorclient.events.render.Render3DEvent; 7 | import meteordevelopment.meteorclient.renderer.ShapeMode; 8 | import meteordevelopment.meteorclient.systems.modules.Module; 9 | import meteordevelopment.meteorclient.systems.modules.combat.Surround; 10 | import meteordevelopment.meteorclient.utils.render.RenderUtils; 11 | import meteordevelopment.meteorclient.utils.render.color.Color; 12 | import meteordevelopment.orbit.EventHandler; 13 | import net.minecraft.client.MinecraftClient; 14 | import net.minecraft.util.hit.BlockHitResult; 15 | import net.minecraft.util.math.BlockPos; 16 | public class Bubbles2 extends Module { 17 | public Bubbles2() { 18 | super(Addon.render, "Bubbles2", "Bubbles, but 2 version."); 19 | } 20 | 21 | 22 | 23 | @EventHandler 24 | public void onRender(Render3DEvent event) 25 | { 26 | BlockPos playerPos; 27 | 28 | { 29 | assert mc.player != null; 30 | playerPos = mc.player.getBlockPos(); 31 | } 32 | 33 | int blockX = playerPos.getX(); 34 | int blockY = playerPos.getY(); 35 | int blockZ = playerPos.getZ(); 36 | 37 | BlockPos blockPos = new BlockPos(blockX, blockY-1, blockZ); 38 | 39 | Color line = new Color(180, 0, 0, 255); 40 | Color side = new Color(225, 0, 0, 50); 41 | ShapeMode sm = ShapeMode.Both; 42 | 43 | RenderUtils.renderTickingBlock(blockPos, new Color(225, 0, 0, 50), line, sm, 0, 20, false, true); } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/render/KillEffects.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.render; 2 | 3 | import bebra.hack.addon.Addon; 4 | import bebra.hack.addon.Utils.BWorldUtils; 5 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 6 | import meteordevelopment.meteorclient.settings.BoolSetting; 7 | import meteordevelopment.meteorclient.settings.IntSetting; 8 | import meteordevelopment.meteorclient.settings.Setting; 9 | import meteordevelopment.meteorclient.settings.SettingGroup; 10 | import meteordevelopment.meteorclient.systems.modules.Module; 11 | import meteordevelopment.orbit.EventHandler; 12 | import net.minecraft.entity.Entity; 13 | 14 | import static bebra.hack.addon.Utils.BEntityUtils.deadEntity; 15 | import static bebra.hack.addon.Utils.BEntityUtils.isDeathPacket; 16 | 17 | public class KillEffects extends Module { 18 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 19 | 20 | 21 | // General 22 | private final Setting range = sgGeneral.add(new IntSetting.Builder() 23 | .name("range") 24 | .description("How far away the lightning is allowed to spawn from you.") 25 | .defaultValue(16) 26 | .sliderRange(0,256) 27 | .build() 28 | ); 29 | 30 | private final Setting avoidSelf = sgGeneral.add(new BoolSetting.Builder() 31 | .name("avoid-self") 32 | .description("Will not render your own deaths.") 33 | .defaultValue(true) 34 | .build() 35 | ); 36 | 37 | 38 | public KillEffects() { 39 | super(Addon.render, "kill-effects", "Spawns a lightning where a player dies."); 40 | } 41 | 42 | 43 | @EventHandler 44 | private void onReceivePacket(PacketEvent.Receive event) { 45 | if (isDeathPacket(event)) { 46 | Entity player = deadEntity; 47 | if (player == mc.player && avoidSelf.get()) return; 48 | if (mc.player.distanceTo(player) > range.get()) return; 49 | 50 | double playerX = player.getX(); 51 | double playerY = player.getY(); 52 | double playerZ = player.getZ(); 53 | 54 | BWorldUtils.spawnLightning(playerX, playerY, playerZ); 55 | } 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/render/Linia.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.render; 2 | /* 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.render.Render3DEvent; 5 | import meteordevelopment.meteorclient.systems.modules.Module; 6 | import meteordevelopment.meteorclient.utils.render.color.Color; 7 | import meteordevelopment.orbit.EventHandler; 8 | import net.minecraft.entity.player.PlayerEntity; 9 | import net.minecraft.util.math.BlockPos; 10 | 11 | public class Linia extends Module 12 | { 13 | public Linia() 14 | { 15 | super(Addon.render, "Linia", ""); 16 | } 17 | public PlayerEntity target; 18 | 19 | @EventHandler 20 | public void Render(Render3DEvent event) 21 | { 22 | float x1, y1, z1; 23 | float x2, y2, z2; 24 | 25 | 26 | int blockX = target.getBlockX(); 27 | int blockY = target.getBlockY(); 28 | int blockZ = target.getBlockZ(); 29 | 30 | BlockPos blockPos = new BlockPos(blockX, blockY, blockZ); 31 | x1 = (float) target.getBlockX(); 32 | y1 = (float) target.getBlockY(); 33 | z1 = (float) target.getBlockZ(); 34 | 35 | x2 = (float) target.getBlockX(); 36 | y2 = (float) target.getBlockY(); 37 | z2 = (float) target.getBlockZ(); 38 | 39 | event.renderer.line(x1, y1, z1, x2, y2, z2, new Color(225, 0, 0, 50)); 40 | } 41 | } 42 | */ 43 | -------------------------------------------------------------------------------- /src/main/java/bebra/hack/addon/modules/render/TimeAnimator.java: -------------------------------------------------------------------------------- 1 | package bebra.hack.addon.modules.render; 2 | 3 | import bebra.hack.addon.Addon; 4 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 5 | import meteordevelopment.meteorclient.events.world.TickEvent; 6 | import meteordevelopment.meteorclient.settings.IntSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.orbit.EventHandler; 11 | import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket; 12 | 13 | public class TimeAnimator extends Module { 14 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 15 | 16 | 17 | // General 18 | private final Setting speed = sgGeneral.add(new IntSetting.Builder() 19 | .name("speed") 20 | .description("How fast the day and night cycle should be.") 21 | .defaultValue(100) 22 | .sliderRange(1, 500) 23 | .build() 24 | ); 25 | 26 | 27 | public TimeAnimator() { 28 | super(Addon.render, "time-animator", "Speeds up the day and night cycle."); 29 | } 30 | 31 | 32 | private long timer; 33 | 34 | 35 | @Override 36 | public void onActivate() { 37 | mc.world.setTimeOfDay(mc.world.getTime()); 38 | timer = 0; 39 | } 40 | 41 | @Override 42 | public void onDeactivate() { 43 | mc.world.setTimeOfDay(mc.world.getTime()); 44 | timer = 0; 45 | } 46 | 47 | @EventHandler 48 | private void onPacketReceive(PacketEvent.Receive event) { 49 | if (event.packet instanceof WorldTimeUpdateS2CPacket) { 50 | event.cancel(); 51 | } 52 | } 53 | 54 | @EventHandler 55 | private void onTick(TickEvent.Post event) { 56 | timer ++; 57 | mc.world.setTimeOfDay(timer * (speed.get())); 58 | 59 | if (mc.world.getTimeOfDay() >= 24000 || mc.world.getTimeOfDay() <= -24000){ 60 | timer = 0; 61 | mc.world.setTimeOfDay(0); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Addon.java: -------------------------------------------------------------------------------- 1 | package com.example.addon; 2 | import meteordevelopment.meteorclient.systems.modules.Categories; 3 | import com.example.addon.modules.BebraHackPVP.*; 4 | import com.example.addon.modules.hud.CustomImage; 5 | import com.example.addon.modules.hud.Killfeed; 6 | import com.example.addon.modules.misc.*; 7 | import com.example.addon.modules.BebraHackRender.*; 8 | import com.mojang.logging.LogUtils; 9 | import meteordevelopment.meteorclient.systems.hud.Hud; 10 | import meteordevelopment.meteorclient.systems.hud.HudGroup; 11 | import meteordevelopment.meteorclient.addons.MeteorAddon; 12 | import meteordevelopment.meteorclient.systems.modules.Category; 13 | import meteordevelopment.meteorclient.systems.modules.Modules; 14 | import org.slf4j.Logger; 15 | 16 | 17 | 18 | public class Addon extends MeteorAddon { 19 | public static String VERSION = "BebraHack V5"; 20 | public static String INVITE_LINK = "https://discord.gg/FP8jcqTZyG"; 21 | 22 | public static final Logger LOG = LogUtils.getLogger(); 23 | 24 | public static final Category combat = new Category("BebraHackPVP"); 25 | public static final Category misc = new Category("BebraHackPVE"); 26 | public static final Category render = new Category("BebraHackRender"); 27 | public static final HudGroup HUD_GROUP = new HudGroup("BebraHackHUD"); 28 | 29 | @Override 30 | public void onInitialize() { 31 | LOG.info("Initializing Meteor Addon BebraHack V5"); 32 | 33 | // HUD 34 | // Hud.get().register(ItemCounter.INFO); 35 | Hud.get().register(Killfeed.INFO); 36 | Hud.get().register(CustomImage.INFO); 37 | // Hud.get().register(WelcomeHud.INFO); 38 | // Hud.get().register(TextPresets.INFO); 39 | 40 | // BebraHackPVP 41 | Modules.get().add(new AntiCrystal()); 42 | Modules.get().add(new Burrow()); 43 | Modules.get().add(new AntiSurroundBlocks()); 44 | Modules.get().add(new FanSurroundBEBRA()); 45 | Modules.get().add(new CevBreaker()); 46 | Modules.get().add(new Notifications()); 47 | Modules.get().add(new tntauraBEBRAplus()); 48 | Modules.get().add(new PacketHoleFill()); 49 | Modules.get().add(new sphere()); 50 | Modules.get().add(new AutoEz()); 51 | Modules.get().add(new SurroundBEBRA()); 52 | Modules.get().add(new SelfAnvilBEBRA()); 53 | Modules.get().add(new AnchorAuraBEBRA()); 54 | Modules.get().add(new AntiBurrow()); 55 | 56 | 57 | // BebraHackPVE 58 | Modules.get().add(new Twerk()); 59 | Modules.get().add(new AutoBuild()); 60 | Modules.get().add(new NoDesync()); 61 | Modules.get().add(new SpamInChat()); 62 | Modules.get().add(new Lavacast()); 63 | Modules.get().add(new bebra_info_and_help()); 64 | Modules.get().add(new AutoCraft()); 65 | Modules.get().add(new VillagerRoller()); 66 | Modules.get().add(new PingSpoofer()); 67 | Modules.get().add(new CoordLogger()); 68 | Modules.get().add(new AutoSex()); 69 | Modules.get().add(new TreeAura()); 70 | Modules.get().add(new AutoTNT()); 71 | Modules.get().add(new AutoLogin()); 72 | Modules.get().add(new EFly()); 73 | Modules.get().add(new MEGA_DUPEprank()); 74 | //Modules.get().add(new ChatEncryption()); 75 | Modules.get().add(new AutoLogTotems()); 76 | Modules.get().add(new SilentItem()); 77 | Modules.get().add(new Spinner()); 78 | 79 | // BebraHack Render 80 | //Modules.get().add(new Confetti()); 81 | //Modules.get().add(new HoleESPPlus()); 82 | Modules.get().add(new TimeAnimator()); 83 | //Modules.get().add(new NewChunks()); 84 | Modules.get().add(new AntiVanish()); 85 | ///Modules.get().add(new Prefix()); 86 | Modules.get().add(new KillEffects()); 87 | //Modules.get().add(new BurrowESP()); 88 | //Modules.get().add(new BebraESP()); 89 | 90 | Modules.get().get(bebra_info_and_help.class).toggle(); 91 | } 92 | 93 | @Override 94 | public void onRegisterCategories() { 95 | Modules.registerCategory(combat); 96 | Modules.registerCategory(misc); 97 | Modules.registerCategory(render); 98 | } 99 | 100 | @Override 101 | public String getPackage() { 102 | return "com.example.addon"; 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/AAABLYA.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | public class AAABLYA { 4 | 5 | private long nanoTime = -1L; 6 | 7 | public void reset() { 8 | nanoTime = System.nanoTime(); 9 | } 10 | 11 | public void setTicks(long ticks) { nanoTime = System.nanoTime() - convertTicksToNano(ticks); } 12 | public void setMillis(long time) { nanoTime = System.nanoTime() - convertMillisToNano(time); } 13 | public void setSec(long time) { nanoTime = System.nanoTime() - convertSecToNano(time); } 14 | 15 | public long getTicks() { return convertNanoToTicks(nanoTime); } 16 | public long getMillis() { return convertNanoToMillis(nanoTime); } 17 | public long getSec() { return convertNanoToSec(nanoTime); } 18 | 19 | public boolean passedTicks(long ticks) { return passedNano(convertTicksToNano(ticks)); } 20 | public boolean passedNano(long time) { return System.nanoTime() - nanoTime >= time; } 21 | public boolean passedMillis(long time) { return passedNano(convertMillisToNano(time)); } 22 | public boolean passedSec(long time) { return passedNano(convertSecToNano(time)); } 23 | 24 | public long convertMillisToTicks(long time) { return time / 50; } 25 | public long convertTicksToMillis(long ticks) { return ticks * 50; } 26 | public long convertNanoToTicks(long time) { return convertMillisToTicks(convertNanoToMillis(time)); } 27 | public long convertTicksToNano(long ticks) { return convertMillisToNano(convertTicksToMillis(ticks)); } 28 | 29 | public long convertSecToMillis(long time) { return time * 1000L; } 30 | public long convertSecToMicro(long time) { return convertMillisToMicro(convertSecToMillis(time)); } 31 | public long convertSecToNano(long time) { return convertMicroToNano(convertMillisToMicro(convertSecToMillis(time))); } 32 | 33 | public long convertMillisToMicro(long time) { return time * 1000L; } 34 | public long convertMillisToNano(long time) { return convertMicroToNano(convertMillisToMicro(time)); } 35 | 36 | public long convertMicroToNano(long time) { return time * 1000L; } 37 | 38 | public long convertNanoToMicro(long time) { return time / 1000L; } 39 | public long convertNanoToMillis(long time) { return convertMicroToMillis(convertNanoToMicro(time)); } 40 | public long convertNanoToSec(long time) { return convertMillisToSec(convertMicroToMillis(convertNanoToMicro(time))); } 41 | 42 | public long convertMicroToMillis(long time) { return time / 1000L; } 43 | public long convertMicroToSec(long time) { return convertMillisToSec(convertMicroToMillis(time)); } 44 | 45 | public long convertMillisToSec(long time) { return time / 1000L; } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/ArmorUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import net.minecraft.item.ItemStack; 4 | import net.minecraft.item.Items; 5 | 6 | import static meteordevelopment.meteorclient.MeteorClient.mc; 7 | 8 | public class ArmorUtils { 9 | 10 | public static ItemStack getArmor(int slot) { 11 | return mc.player.getInventory().armor.get(slot); 12 | } 13 | 14 | public static boolean isFallFlying() { 15 | return getArmor(2).getItem() == Items.ELYTRA && mc.player.isFallFlying(); 16 | } 17 | 18 | public static boolean checkThreshold(ItemStack i, double threshold) { 19 | return getDamage(i) <= threshold; 20 | } 21 | 22 | public static double getDamage(ItemStack i) {return (((double) (i.getMaxDamage() - i.getDamage()) / i.getMaxDamage()) * 100);} 23 | 24 | 25 | public static boolean isHelm(ItemStack itemStack) { 26 | if (itemStack == null) return false; 27 | if (itemStack.getItem() == Items.NETHERITE_HELMET) return true; 28 | if (itemStack.getItem() == Items.DIAMOND_HELMET) return true; 29 | if (itemStack.getItem() == Items.GOLDEN_HELMET) return true; 30 | if (itemStack.getItem() == Items.IRON_HELMET) return true; 31 | if (itemStack.getItem() == Items.CHAINMAIL_HELMET) return true; 32 | return itemStack.getItem() == Items.LEATHER_HELMET; 33 | } 34 | 35 | public static boolean isChest(ItemStack itemStack) { 36 | if (itemStack == null) return false; 37 | if (itemStack.getItem() == Items.NETHERITE_CHESTPLATE) return true; 38 | if (itemStack.getItem() == Items.DIAMOND_CHESTPLATE) return true; 39 | if (itemStack.getItem() == Items.GOLDEN_CHESTPLATE) return true; 40 | if (itemStack.getItem() == Items.IRON_CHESTPLATE) return true; 41 | if (itemStack.getItem() == Items.CHAINMAIL_CHESTPLATE) return true; 42 | return itemStack.getItem() == Items.LEATHER_CHESTPLATE; 43 | } 44 | 45 | public static boolean isLegs(ItemStack itemStack) { 46 | if (itemStack == null) return false; 47 | if (itemStack.getItem() == Items.NETHERITE_LEGGINGS) return true; 48 | if (itemStack.getItem() == Items.DIAMOND_LEGGINGS) return true; 49 | if (itemStack.getItem() == Items.GOLDEN_LEGGINGS) return true; 50 | if (itemStack.getItem() == Items.IRON_LEGGINGS) return true; 51 | if (itemStack.getItem() == Items.CHAINMAIL_LEGGINGS) return true; 52 | return itemStack.getItem() == Items.LEATHER_LEGGINGS; 53 | } 54 | 55 | public static boolean isBoots(ItemStack itemStack) { 56 | if (itemStack == null) return false; 57 | if (itemStack.getItem() == Items.NETHERITE_BOOTS) return true; 58 | if (itemStack.getItem() == Items.DIAMOND_BOOTS) return true; 59 | if (itemStack.getItem() == Items.GOLDEN_BOOTS) return true; 60 | if (itemStack.getItem() == Items.IRON_BOOTS) return true; 61 | if (itemStack.getItem() == Items.CHAINMAIL_BOOTS) return true; 62 | return itemStack.getItem() == Items.LEATHER_BOOTS; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/BPlayerUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.util.math.BlockPos; 5 | import net.minecraft.util.math.Direction; 6 | import net.minecraft.util.math.Vec3d; 7 | 8 | import static meteordevelopment.meteorclient.MeteorClient.mc; 9 | 10 | public class BPlayerUtils { 11 | public static Vec3d playerEyePos() { 12 | return new Vec3d(mc.player.getX(), mc.player.getY() + mc.player.getEyeHeight(mc.player.getPose()), mc.player.getZ()); 13 | } 14 | 15 | public static double distanceFromEye(Entity entity) { 16 | double feet = distanceFromEye(entity.getX(), entity.getY(), entity.getZ()); 17 | double head = distanceFromEye(entity.getX(), entity.getY() + entity.getHeight(), entity.getZ()); 18 | return Math.min(head, feet); 19 | } 20 | 21 | public static double distanceFromEye(BlockPos blockPos) { 22 | return distanceFromEye(blockPos.getX(), blockPos.getY(), blockPos.getZ()); 23 | } 24 | 25 | public static double distanceFromEye(Vec3d vec3d) { 26 | return distanceFromEye(vec3d.getX(), vec3d.getY(), vec3d.getZ()); 27 | } 28 | 29 | public static double distanceFromEye(double x, double y, double z) { 30 | double f = (mc.player.getX() - x); 31 | double g = (mc.player.getY() + mc.player.getEyeHeight(mc.player.getPose()) - y); 32 | double h = (mc.player.getZ() - z); 33 | return Math.sqrt(f * f + g * g + h * h); 34 | } 35 | 36 | public static double[] directionSpeed(float speed) { 37 | float forward = mc.player.input.movementForward; 38 | float side = mc.player.input.movementSideways; 39 | float yaw = mc.player.prevYaw + (mc.player.getYaw() - mc.player.prevYaw); 40 | 41 | if (forward != 0.0F) { 42 | if (side > 0.0F) { 43 | yaw += ((forward > 0.0F) ? -45 : 45); 44 | } else if (side < 0.0F) { 45 | yaw += ((forward > 0.0F) ? 45 : -45); 46 | } 47 | 48 | side = 0.0F; 49 | 50 | if (forward > 0.0F) { 51 | forward = 1.0F; 52 | } else if (forward < 0.0F) { 53 | forward = -1.0F; 54 | } 55 | } 56 | 57 | double sin = Math.sin(Math.toRadians(yaw + 90.0F)); 58 | double cos = Math.cos(Math.toRadians(yaw + 90.0F)); 59 | double dx = forward * speed * cos + side * speed * sin; 60 | double dz = forward * speed * sin - side * speed * cos; 61 | 62 | return new double[] { dx, dz }; 63 | } 64 | 65 | public static Direction direction(float yaw){ 66 | yaw = yaw % 360; 67 | if (yaw < 0) yaw += 360; 68 | 69 | if (yaw >= 315 || yaw < 45) return Direction.SOUTH; 70 | else if (yaw >= 45 && yaw < 135) return Direction.WEST; 71 | else if (yaw >= 135 && yaw < 225) return Direction.NORTH; 72 | else if (yaw >= 225 && yaw < 315) return Direction.EAST; 73 | 74 | return Direction.SOUTH; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/BedUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import com.example.addon.Utils.AutomationUtils; 4 | import net.minecraft.entity.player.PlayerEntity; 5 | import net.minecraft.util.math.BlockPos; 6 | import net.minecraft.util.math.Vec3d; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | import java.util.Random; 11 | 12 | public class BedUtils { 13 | 14 | public static ArrayList selfTrapPositions = new ArrayList() {{ 15 | add(new Vec3d(1, 1, 0)); 16 | add(new Vec3d(-1, 1, 0)); 17 | add(new Vec3d(0, 1, 1)); 18 | add(new Vec3d(0, 1, -1)); 19 | }}; 20 | 21 | public static BlockPos getSelfTrapBlock(PlayerEntity p, Boolean escapePrevention) { 22 | BlockPos tpos = p.getBlockPos(); 23 | List selfTrapBlocks = new ArrayList<>(); 24 | if (!escapePrevention && AutomationUtils.isTrapBlock(tpos.up(2))) return tpos.up(2); 25 | for (Vec3d stp : selfTrapPositions) { 26 | BlockPos stb = tpos.add(stp.x, stp.y, stp.z); 27 | if (AutomationUtils.isTrapBlock(stb)) selfTrapBlocks.add(stb); 28 | } 29 | if (selfTrapBlocks.isEmpty()) return null; 30 | return selfTrapBlocks.get(new Random().nextInt(selfTrapBlocks.size())); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/BlockUpdateEvent.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.events.Cancellable; 4 | import net.minecraft.block.BlockState; 5 | import net.minecraft.util.math.BlockPos; 6 | 7 | public class BlockUpdateEvent extends Cancellable { 8 | public BlockPos pos; 9 | public BlockState oldState, newState; 10 | 11 | public BlockUpdateEvent(BlockPos pos, BlockState oldState, BlockState newState) { 12 | this.pos = pos; 13 | this.oldState = oldState; 14 | this.newState = newState; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/BreakBlockEvent.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.events.Cancellable; 4 | import net.minecraft.util.math.BlockPos; 5 | 6 | public class BreakBlockEvent extends Cancellable { 7 | private final BlockPos pos; 8 | 9 | public BreakBlockEvent(BlockPos pos) { 10 | this.pos = pos; 11 | } 12 | 13 | public BlockPos getPos() { 14 | return pos; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/CHMainUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 4 | import net.minecraft.entity.Entity; 5 | import net.minecraft.entity.player.PlayerEntity; 6 | import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket; 7 | import org.apache.commons.codec.binary.Base64; 8 | import org.apache.commons.codec.digest.DigestUtils; 9 | import javax.crypto.BadPaddingException; 10 | import javax.crypto.Cipher; 11 | import javax.crypto.IllegalBlockSizeException; 12 | import javax.crypto.NoSuchPaddingException; 13 | import javax.crypto.spec.SecretKeySpec; 14 | import java.security.InvalidKeyException; 15 | import java.security.NoSuchAlgorithmException; 16 | import java.util.Arrays; 17 | 18 | import static meteordevelopment.meteorclient.MeteorClient.mc; 19 | 20 | public class CHMainUtils { 21 | 22 | public static String encrypt(String text, String key) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException { 23 | Cipher cipher = Cipher.getInstance("AES"); 24 | cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(Arrays.copyOf(DigestUtils.sha1(key), 16), "AES")); 25 | 26 | return Base64.encodeBase64String(cipher.doFinal(text.getBytes())); 27 | } 28 | 29 | public static String decrypt(String text, String key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { 30 | Cipher cipher = Cipher.getInstance("AES"); 31 | cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(Arrays.copyOf(DigestUtils.sha1(key), 16), "AES")); 32 | 33 | return new String(cipher.doFinal(Base64.decodeBase64(text))); 34 | } 35 | 36 | public static String apply(String msg) { 37 | if (msg.contains(":smile:")) msg = msg.replace(":smile:", "☺"); 38 | if (msg.contains(":sad:")) msg = msg.replace(":sad:", "☹"); 39 | if (msg.contains(":heart:")) msg = msg.replace(":heart:", "❤"); 40 | if (msg.contains(":skull:")) msg = msg.replace(":skull:", "☠"); 41 | if (msg.contains(":star:")) msg = msg.replace(":star:", "★"); 42 | if (msg.contains(":flower:")) msg = msg.replace(":flower:", "❀"); 43 | if (msg.contains(":pick:")) msg = msg.replace(":pick:", "⛏"); 44 | if (msg.contains(":wheelchair:")) msg = msg.replace(":wheelchair:", "♿"); 45 | if (msg.contains(":lightning:")) msg = msg.replace(":lightning:", "⚡"); 46 | if (msg.contains(":rod:")) msg = msg.replace(":rod:", "🎣"); 47 | if (msg.contains(":potion:")) msg = msg.replace(":potion:", "🧪"); 48 | if (msg.contains(":fire:")) msg = msg.replace(":fire:", "🔥"); 49 | if (msg.contains(":shears:")) msg = msg.replace(":shears:", "✂"); 50 | if (msg.contains(":bell:")) msg = msg.replace(":bell:", "🔔"); 51 | if (msg.contains(":bow:")) msg = msg.replace(":bow:", "🏹"); 52 | if (msg.contains(":trident:")) msg = msg.replace(":trident:", "🔱"); 53 | if (msg.contains(":cloud:")) msg = msg.replace(":cloud:", "☁"); 54 | if (msg.contains(":cat:")) msg = msg.replace(":cat:", "ᓚᘏᗢ"); 55 | 56 | return msg; 57 | } 58 | public static Entity deadEntity; 59 | public static boolean isDeathPacket(PacketEvent.Receive event) { 60 | if (event.packet instanceof EntityStatusS2CPacket packet) { 61 | if (packet.getStatus() == 3) { 62 | deadEntity = packet.getEntity(mc.world); 63 | return deadEntity instanceof PlayerEntity; 64 | } 65 | } 66 | return false; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/Distance.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import net.minecraft.util.math.BlockPos; 4 | import net.minecraft.util.math.MathHelper; 5 | import net.minecraft.util.math.Vec3d; 6 | 7 | 8 | public class Distance { 9 | 10 | public static double distance(double x1, double y1, double z1, double x2, double y2, double z2) { 11 | double dX = x2 - x1; 12 | double dY = y2 - y1; 13 | double dZ = z2 - z1; 14 | 15 | return Math.sqrt(dX * dX + dY * dY + dZ * dZ); 16 | } 17 | 18 | public static double distance(Vec3d vec1, Vec3d vec2) { 19 | double dX = vec2.x - vec1.x; 20 | double dY = vec2.y - vec1.y; 21 | double dZ = vec2.z - vec1.z; 22 | 23 | return Math.sqrt(dX * dX + dY * dY + dZ * dZ); 24 | } 25 | 26 | public static double distance(BlockPos pos1, BlockPos pos2) { 27 | double dX = pos2.getX() - pos1.getX(); 28 | double dY = pos2.getY() - pos1.getY(); 29 | double dZ = pos2.getZ() - pos1.getZ(); 30 | 31 | return Math.sqrt(dX * dX + dY * dY + dZ * dZ); 32 | } 33 | 34 | public static double distanceXZ(Vec3d pos1, Vec3d pos2) { 35 | double dX = pos1.getX() - pos2.getX(); 36 | double dZ = pos1.getZ() - pos2.getZ(); 37 | 38 | return MathHelper.sqrt((float) (dX * dX + dZ * dZ)); 39 | } 40 | 41 | public static double distanceXZ(double x1, double x2, double z1, double z2) { 42 | double dX = x1 - x2; 43 | double dZ = z1 - z2; 44 | 45 | return MathHelper.sqrt((float) (dX * dX + dZ * dZ)); 46 | } 47 | 48 | public static double distanceY(Vec3d pos1, Vec3d pos2) { 49 | return Math.abs(pos2.y - pos1.y); 50 | } 51 | 52 | public static double distanceY(double y1, double y2) { 53 | return Math.abs(y1 - y2); 54 | } 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/Emotes.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | public class Emotes { 4 | 5 | public static String apply(String msg) { 6 | if (msg.contains(":smile:")) msg = msg.replace(":smile:", "☺"); 7 | if (msg.contains(":sad:")) msg = msg.replace(":sad:", "☹"); 8 | if (msg.contains(":heart:")) msg = msg.replace(":heart:", "❤"); 9 | if (msg.contains(":skull:")) msg = msg.replace(":skull:", "☠"); 10 | if (msg.contains(":star:")) msg = msg.replace(":star:", "★"); 11 | if (msg.contains(":flower:")) msg = msg.replace(":flower:", "❀"); 12 | if (msg.contains(":pick:")) msg = msg.replace(":pick:", "⛏"); 13 | if (msg.contains(":wheelchair:")) msg = msg.replace(":wheelchair:", "♿"); 14 | if (msg.contains(":lightning:")) msg = msg.replace(":lightning:", "⚡"); 15 | if (msg.contains(":rod:")) msg = msg.replace(":rod:", "🎣"); 16 | if (msg.contains(":potion:")) msg = msg.replace(":potion:", "🧪"); 17 | if (msg.contains(":fire:")) msg = msg.replace(":fire:", "🔥"); 18 | if (msg.contains(":shears:")) msg = msg.replace(":shears:", "✂"); 19 | if (msg.contains(":bell:")) msg = msg.replace(":bell:", "🔔"); 20 | if (msg.contains(":bow:")) msg = msg.replace(":bow:", "🏹"); 21 | if (msg.contains(":trident:")) msg = msg.replace(":trident:", "🔱"); 22 | if (msg.contains(":cloud:")) msg = msg.replace(":cloud:", "☁"); 23 | return msg; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/HandledScreenAccessor.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import net.minecraft.client.gui.screen.ingame.HandledScreen; 4 | import net.minecraft.client.gui.screen.ingame.MerchantScreen; 5 | import net.minecraft.screen.MerchantScreenHandler; 6 | import net.minecraft.screen.ScreenHandler; 7 | import net.minecraft.client.gui.screen.Screen; 8 | import org.spongepowered.asm.mixin.Mixin; 9 | import org.spongepowered.asm.mixin.gen.Accessor; 10 | 11 | @Mixin(HandledScreen.class) 12 | public interface HandledScreenAccessor { 13 | @Accessor 14 | T getHandler(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/IRenderer2D.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.utils.render.color.Color; 4 | import net.fabricmc.api.EnvType; 5 | import net.fabricmc.api.Environment; 6 | 7 | @Environment(EnvType.CLIENT) 8 | public interface IRenderer2D { 9 | void texQuadHFlip(double x, double y, double width, double height, Color color); 10 | void texQuadVFlip(double x, double y, double width, double height, Color color); 11 | void texQuadHVFlip(double x, double y, double width, double height, Color color); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/Initialization.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import com.example.addon.Utils.DamageHelper; 4 | import meteordevelopment.meteorclient.systems.modules.Module; 5 | import meteordevelopment.meteorclient.systems.modules.Modules; 6 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 7 | import net.minecraft.text.MutableText; 8 | import net.minecraft.text.Text; 9 | import net.minecraft.util.Formatting; 10 | import org.reflections.Reflections; 11 | 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | import java.util.Set; 15 | 16 | //a 17 | import net.minecraft.client.network.ServerInfo; 18 | import net.minecraft.client.option.ServerList; 19 | import static meteordevelopment.meteorclient.MeteorClient.mc; 20 | //a 21 | public class Initialization { 22 | private static final List moduleList = new ArrayList<>(); 23 | 24 | // executor.stop() breaks everything 25 | public static Thread executor = Thread.currentThread(); 26 | 27 | public static void init(){ 28 | modules(); 29 | utils(); 30 | prefix(); 31 | addCPvP(); 32 | add2g2c(); 33 | } 34 | 35 | private static void prefix(){ 36 | ChatUtils.registerCustomPrefix("bbcdevelopment.addon.bbcaddon", Initialization::getPrefix); 37 | } 38 | 39 | private static void utils(){ 40 | DamageHelper.init(); 41 | } 42 | 43 | private static void modules(){ 44 | Set> reflections = new Reflections("bbcdevelopment.addon.bbcaddon.modules").getSubTypesOf(Module.class); 45 | 46 | reflections.forEach(aClass -> { 47 | try { 48 | moduleList.add(aClass.newInstance()); 49 | } catch (InstantiationException | IllegalAccessException e) { 50 | Initialization.executor.stop(); 51 | throw new RuntimeException(e); 52 | } 53 | }); 54 | 55 | moduleList.forEach(module -> Modules.get().add(module)); 56 | } 57 | 58 | public static Text getPrefix() { 59 | MutableText logo = Text.literal("BBC"); 60 | MutableText prefix = Text.literal(""); 61 | logo.setStyle(logo.getStyle().withFormatting(Formatting.DARK_GRAY)); 62 | prefix.setStyle(prefix.getStyle().withFormatting(Formatting.DARK_GRAY)); 63 | prefix.append("["); 64 | prefix.append(logo); 65 | prefix.append("] "); 66 | return prefix; 67 | } 68 | 69 | public static void addCPvP(){ 70 | ServerList servers = new ServerList(mc); 71 | servers.loadFile(); 72 | 73 | boolean found = false; 74 | for (int i = 0; i < servers.size(); i++) { 75 | ServerInfo server = servers.get(i); 76 | 77 | if (server.address.contains("eu.cpvp.me")) { 78 | found = true; 79 | break; 80 | } 81 | } 82 | 83 | if (!found) { 84 | servers.add(new ServerInfo("cpvp.me", "eu.cpvp.me", false), false); 85 | servers.saveFile(); 86 | } 87 | } 88 | public static void add2g2c(){ 89 | ServerList servers = new ServerList(mc); 90 | servers.loadFile(); 91 | 92 | boolean found = false; 93 | for (int i = 0; i < servers.size(); i++) { 94 | ServerInfo server = servers.get(i); 95 | 96 | if (server.address.contains("2g2c.org")) { 97 | found = true; 98 | break; 99 | } 100 | } 101 | 102 | if (!found) { 103 | servers.add(new ServerInfo("2g2c", "2g2c.org", false), false); 104 | servers.saveFile(); 105 | } 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/InteractUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import net.minecraft.entity.Entity; 4 | import net.minecraft.network.packet.c2s.play.HandSwingC2SPacket; 5 | import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; 6 | import net.minecraft.util.Hand; 7 | 8 | import static meteordevelopment.meteorclient.MeteorClient.mc; 9 | 10 | public class InteractUtils { 11 | public static void normalHit(Entity target, boolean swing) { 12 | mc.interactionManager.attackEntity(mc.player, target); 13 | if (swing) mc.player.swingHand(Hand.MAIN_HAND); 14 | } 15 | 16 | public static void packetHit(Entity target, boolean swing) { 17 | mc.player.networkHandler.sendPacket(PlayerInteractEntityC2SPacket.attack(target, mc.player.isPlayer())); 18 | if (swing) mc.getNetworkHandler().sendPacket(new HandSwingC2SPacket(Hand.MAIN_HAND)); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/Interaction.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.utils.entity.EntityUtils; 4 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 5 | import net.minecraft.entity.Entity; 6 | import net.minecraft.entity.TntEntity; 7 | import net.minecraft.entity.decoration.EndCrystalEntity; 8 | import net.minecraft.entity.player.PlayerEntity; 9 | import net.minecraft.network.packet.c2s.play.HandSwingC2SPacket; 10 | import net.minecraft.network.packet.c2s.play.PlayerInteractBlockC2SPacket; 11 | import net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket; 12 | import net.minecraft.util.Hand; 13 | import net.minecraft.util.hit.BlockHitResult; 14 | import net.minecraft.util.math.Box; 15 | 16 | import javax.annotation.Nullable; 17 | import javax.swing.*; 18 | 19 | import java.util.function.Predicate; 20 | 21 | import static meteordevelopment.meteorclient.MeteorClient.mc; 22 | 23 | public class Interaction { 24 | private static int prevSlot = -1; 25 | 26 | public static void updateSlot(FindItemResult result, boolean packet) { 27 | updateSlot(result.slot(), packet); 28 | } 29 | 30 | public static boolean updateSlot(int slot, boolean packet) { 31 | if (slot < 0 || slot > 8) return false; 32 | if (prevSlot == -1) prevSlot = mc.player.getInventory().selectedSlot; 33 | 34 | // updates slot on client and server side 35 | mc.player.getInventory().selectedSlot = slot; 36 | if (packet) mc.getNetworkHandler().sendPacket(new UpdateSelectedSlotC2SPacket(slot)); 37 | return true; 38 | } 39 | 40 | public static boolean swapBack(int slot) { 41 | return updateSlot(slot, true); 42 | } 43 | 44 | 45 | public static boolean swapBack() { 46 | if (prevSlot == -1) return false; 47 | 48 | boolean return_ = updateSlot(prevSlot, true); 49 | prevSlot = -1; 50 | return return_; 51 | } 52 | 53 | public static void doSwing(SwingHand swingHand, boolean packetSwing, @Nullable Hand autoHand) { 54 | switch (swingHand) { 55 | case MainHand -> doSwing(Hand.MAIN_HAND, packetSwing); 56 | case OffHand -> doSwing(Hand.OFF_HAND, packetSwing); 57 | case Auto -> doSwing(autoHand, packetSwing); 58 | } 59 | } 60 | 61 | public static void doSwing(Hand hand, boolean packetSwing) { 62 | if (packetSwing) mc.getNetworkHandler().sendPacket(new HandSwingC2SPacket(hand)); 63 | else mc.player.swingHand(hand); 64 | } 65 | 66 | public static Hand toHand(SwingHand swingHand) { 67 | return switch (swingHand) { 68 | case MainHand, Auto -> Hand.MAIN_HAND; 69 | case OffHand -> Hand.OFF_HAND; 70 | }; 71 | } 72 | 73 | public static void placeBlock(Hand hand, BlockHitResult result, boolean packetPlace) { 74 | if (packetPlace) mc.getNetworkHandler().sendPacket(new PlayerInteractBlockC2SPacket(hand, result,0)); 75 | else mc.interactionManager.interactBlock(mc.player, hand, result); 76 | } 77 | 78 | public static boolean hasEntity(Box box) { 79 | return hasEntity(box, entity -> entity instanceof PlayerEntity || entity instanceof EndCrystalEntity || entity instanceof TntEntity); 80 | } 81 | 82 | public static boolean hasEntity(Box box, Predicate predicate) { 83 | return EntityUtils.intersectsWithEntity(box, predicate); 84 | } 85 | 86 | public enum SwingHand { 87 | MainHand, OffHand, Auto 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/InvHelper.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import net.minecraft.item.AirBlockItem; 4 | import net.minecraft.item.ItemStack; 5 | import net.minecraft.network.packet.c2s.play.UpdateSelectedSlotC2SPacket; 6 | 7 | import static meteordevelopment.meteorclient.MeteorClient.mc; 8 | 9 | public class InvHelper { 10 | public static boolean isInventoryFull() { 11 | for (int i = 0; i < 36; i++) { 12 | ItemStack itemStack = mc.player.getInventory().getStack(i); 13 | if (itemStack == null || itemStack.getItem() instanceof AirBlockItem) return false; 14 | } 15 | return true; 16 | } 17 | 18 | public static void syncSlot() { 19 | mc.player.getInventory().selectedSlot = mc.player.getInventory().selectedSlot; 20 | mc.player.networkHandler.sendPacket(new UpdateSelectedSlotC2SPacket(mc.player.getInventory().selectedSlot)); 21 | } 22 | 23 | public static int getBlank() { 24 | int index = -1; 25 | for(int i = 0; i < 45; i++) { 26 | if(mc.player.getInventory().getStack(i).isEmpty()) { 27 | index = i; 28 | break; 29 | } 30 | } 31 | return index; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/Item2IntMapSetting.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import it.unimi.dsi.fastutil.objects.Object2IntArrayMap; 4 | import it.unimi.dsi.fastutil.objects.Object2IntMap; 5 | import meteordevelopment.meteorclient.settings.*; 6 | import meteordevelopment.meteorclient.utils.Utils; 7 | import net.minecraft.item.Item; 8 | import net.minecraft.nbt.NbtCompound; 9 | import net.minecraft.util.Identifier; 10 | import net.minecraft.util.registry.Registry; 11 | 12 | import java.util.function.Consumer; 13 | 14 | public class Item2IntMapSetting extends Setting> { 15 | 16 | public Item2IntMapSetting(String name, String description, Object2IntMap defaultValue, Consumer> onChanged, Consumer>> onModuleActivated, IVisible visible) { 17 | super(name, description, defaultValue, onChanged, onModuleActivated, visible); 18 | } 19 | 20 | @Override 21 | public void resetImpl() { 22 | value = new Object2IntArrayMap<>(defaultValue); 23 | } 24 | 25 | @Override 26 | protected Object2IntMap parseImpl(String str) { 27 | String[] values = str.split(","); 28 | Object2IntMap items = createItemMap(); 29 | try { 30 | for (String value : values) { 31 | String[] split = value.split(" "); 32 | Item item = parseId(Registry.ITEM, split[0]); 33 | int number = Integer.parseInt(split[1]); 34 | 35 | items.put(item, number); 36 | } 37 | } catch (Exception ignored) {} 38 | 39 | return items; 40 | } 41 | 42 | @Override 43 | protected boolean isValueValid(Object2IntMap value) { 44 | return true; 45 | } 46 | 47 | @Override 48 | public NbtCompound save(NbtCompound tag) { 49 | NbtCompound valueTag = new NbtCompound(); 50 | for (Item item : get().keySet()) { 51 | Identifier id = Registry.ITEM.getId(item); 52 | if (id != null) valueTag.putInt(id.toString(), get().getInt(item)); 53 | } 54 | tag.put("value", valueTag); 55 | 56 | return tag; 57 | } 58 | 59 | @Override 60 | public Object2IntMap load(NbtCompound tag) { 61 | get().clear(); 62 | 63 | NbtCompound valueTag = tag.getCompound("value"); 64 | for (String key : valueTag.getKeys()) { 65 | Item item = Registry.ITEM.get(new Identifier(key)); 66 | if (item != null) get().put(item, valueTag.getInt(key)); 67 | } 68 | 69 | return get(); 70 | } 71 | 72 | public static class Builder extends SettingBuilder, Item2IntMapSetting> { 73 | public Builder() { 74 | super(new Object2IntArrayMap<>(0)); 75 | } 76 | 77 | @Override 78 | public Item2IntMapSetting build() { 79 | return new Item2IntMapSetting(name, description, defaultValue, onChanged, onModuleActivated, visible); 80 | } 81 | } 82 | 83 | public static Object2IntMap createItemMap() { 84 | Object2IntMap map = new Object2IntArrayMap<>(Registry.ITEM.getIds().size()); 85 | 86 | Registry.ITEM.forEach(item -> map.put(item, 0)); 87 | 88 | return map; 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/Location.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import net.minecraft.entity.player.PlayerEntity; 4 | import net.minecraft.util.math.Vec3d; 5 | 6 | public class Location { 7 | public PlayerEntity player; 8 | public Vec3d vec3d; 9 | public double x, y, z; 10 | 11 | public Location(PlayerEntity player) { 12 | this.player = player; 13 | this.vec3d = player.getPos(); 14 | this.x = this.vec3d.x; 15 | this.y = this.vec3d.y; 16 | this.z = this.vec3d.z; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/OSUtil.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import com.example.addon.Addon; 4 | import com.sun.jna.Platform; 5 | import org.apache.commons.codec.digest.DigestUtils; 6 | 7 | import javax.swing.*; 8 | 9 | public class OSUtil { 10 | 11 | public static boolean isWindows = false; 12 | 13 | public static void init() { 14 | if (getOS().equals(OSType.Windows)) isWindows = true; 15 | } 16 | 17 | 18 | public static OSType getOS() { 19 | if (Platform.isWindows()) return OSType.Windows; 20 | if (Platform.isLinux()) return OSType.Linux; 21 | if (Platform.isMac()) return OSType.Mac; 22 | return OSType.Unsupported; 23 | 24 | } 25 | 26 | public enum OSType { 27 | Windows, 28 | Linux, 29 | Mac, 30 | Unsupported 31 | } 32 | 33 | public static void messageBox(String title, String msg, int type) { 34 | try { JOptionPane.showMessageDialog(null, msg, title, type); } catch (Exception ignored) {} 35 | } 36 | 37 | 38 | public static void info(String msg) { 39 | messageBox("Reaper " + Addon.VERSION, msg, JOptionPane.INFORMATION_MESSAGE); 40 | } 41 | 42 | public static void warning(String msg) { 43 | messageBox("Reaper " + Addon.VERSION, msg, JOptionPane.WARNING_MESSAGE); 44 | } 45 | 46 | public static void error(String msg) { 47 | messageBox("Reaper " + Addon.VERSION, msg, JOptionPane.ERROR_MESSAGE); 48 | } 49 | 50 | public static void bcope() { 51 | error(""" 52 | Reaper has detected banana-plus in your mods folder. 53 | Banana-plus is known to contain malicious code, and for your safety 54 | Reaper will now exit. 55 | """); 56 | } 57 | 58 | public static void debug() { 59 | error("Reaper has detected a possible debugging attempt.\n" + 60 | "If you believe this is an error, please contact support."); 61 | } 62 | 63 | public static void tamper() { 64 | error("Reaper has detected a possible tampering attempt.\n" + 65 | "If you believe this is an error, please contact support."); 66 | } 67 | 68 | public static void authError() { 69 | warning("There was an error contacting the authentication server.\nPlease try again later, or check your firewall / VPN"); 70 | } 71 | 72 | public static void hwidError() { 73 | warning("There was an error generating a hardware ID for your system.\nPlease report this bug, and specify your PC's OS."); 74 | } 75 | 76 | public static void invalidError() { 77 | String h = "error"; 78 | try { 79 | h = DigestUtils.sha256Hex(System.getProperty("user.name") + java.net.InetAddress.getLocalHost().getHostName() + "cope_harder"); 80 | } catch (Exception ignored) {} 81 | error("You do not have an active license.\n" + 82 | "Visit " + Addon.INVITE_LINK + " to purchase a license.\n" + 83 | "If you believe this is an error, please contact support.\n" + 84 | "Your unique hash is " + h); 85 | } 86 | 87 | } 88 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/RenderInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.events.render.Render3DEvent; 4 | import meteordevelopment.meteorclient.renderer.ShapeMode; 5 | 6 | import static com.example.addon.Utils.RenderUtils.*; 7 | 8 | public class RenderInfo { 9 | public Render3DEvent event; 10 | public RenderMode renderMode; 11 | public ShapeMode shapeMode; 12 | 13 | // Основной рендер 14 | public RenderInfo(Render3DEvent event, RenderMode renderMode, ShapeMode shapeMode) { 15 | this.event = event; 16 | this.renderMode = renderMode; 17 | this.shapeMode = shapeMode; 18 | } 19 | 20 | // Рендер в случае если нет RenderMode 21 | public RenderInfo(Render3DEvent event, RenderMode renderMode) { 22 | this.event = event; 23 | this.renderMode = renderMode; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/SendRawMessageEvent.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.events.Cancellable; 4 | 5 | public class SendRawMessageEvent extends Cancellable { 6 | private static final SendRawMessageEvent INSTANCE = new SendRawMessageEvent(); 7 | 8 | public String message; 9 | 10 | public static SendRawMessageEvent get(String message) { 11 | INSTANCE.setCancelled(false); 12 | INSTANCE.message = message; 13 | return INSTANCE; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/Stats.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import org.apache.commons.lang3.time.DurationFormatUtils; 4 | 5 | import java.math.RoundingMode; 6 | import java.text.DecimalFormat; 7 | import java.util.ArrayList; 8 | 9 | public class Stats { 10 | public static int kills = 0; 11 | public static int deaths = 0; 12 | public static int killStreak = 0; 13 | public static int highscore = 0; 14 | public static ArrayList killfeed = new ArrayList<>(); 15 | //public static long rpcStart = System.currentTimeMillis() / 1000L; 16 | public static long startTime = System.currentTimeMillis(); 17 | //public static String onlineUsers = ""; 18 | 19 | public static void reset() { 20 | kills = 0; 21 | deaths = 0; 22 | killStreak = 0; 23 | highscore = 0; 24 | 25 | } 26 | 27 | public static String getPlayTime() { 28 | return DurationFormatUtils.formatDuration(System.currentTimeMillis() - startTime, "HH:mm:ss"); 29 | } 30 | 31 | public static String getKD() { 32 | if (Stats.deaths == 0) return String.valueOf(Stats.kills); //make sure we don't try to divide by 0 33 | Double rawKD = (double) (Stats.kills / Stats.deaths); 34 | DecimalFormat df = new DecimalFormat("#.##"); 35 | df.setRoundingMode(RoundingMode.CEILING); 36 | return df.format(rawKD); 37 | } 38 | 39 | public static void addKill(String kill) { 40 | kills++; 41 | killStreak++; 42 | killfeed.removeIf(k -> k.contains(kill)); 43 | killfeed.add(kill); 44 | if (killfeed.size() > 10) killfeed.remove(0); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/SystemTimer.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | public class SystemTimer { 4 | private long time; 5 | 6 | public SystemTimer() { 7 | time = System.currentTimeMillis(); 8 | } 9 | 10 | public boolean hasPassed(double ms) { 11 | return System.currentTimeMillis() - time >= ms; 12 | } 13 | 14 | public void reset() { 15 | time = System.currentTimeMillis(); 16 | } 17 | 18 | public long getTime() { 19 | return time; 20 | } 21 | 22 | public void setTime(long time) { 23 | this.time = time; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/TL.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | 4 | import java.util.concurrent.ExecutorService; 5 | import java.util.concurrent.Executors; 6 | import java.util.concurrent.ScheduledExecutorService; 7 | 8 | public class TL { // Thread loader 9 | public static ExecutorService auth = Executors.newCachedThreadPool(); 10 | public static ExecutorService cached = Executors.newCachedThreadPool(); 11 | public static ScheduledExecutorService schedueled = Executors.newScheduledThreadPool(10); 12 | public static ExecutorService modules = Executors.newFixedThreadPool(10); 13 | 14 | public static void init() { 15 | 16 | } 17 | 18 | public static void shutdown() { 19 | auth.shutdown(); 20 | cached.shutdown(); 21 | schedueled.shutdown(); 22 | modules.shutdown(); 23 | } 24 | 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/TargetHelper.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.systems.friends.Friends; 4 | import net.minecraft.entity.player.PlayerEntity; 5 | 6 | import java.util.Comparator; 7 | import java.util.List; 8 | import java.util.stream.Collectors; 9 | 10 | import static meteordevelopment.meteorclient.MeteorClient.mc; 11 | 12 | public class TargetHelper { 13 | public static List getTargetsInRange(double enemyRange) { 14 | List stream = mc.world.getPlayers() 15 | .stream() 16 | .filter(e -> e != mc.player) 17 | .filter(e -> e.isAlive()) 18 | .filter(e -> !Friends.get().isFriend(e)) 19 | .filter(e -> ((PlayerEntity) e).getHealth() > 0) 20 | .filter(e -> mc.player.distanceTo(e) < enemyRange) 21 | .sorted(Comparator.comparing(e -> mc.player.distanceTo(e))) 22 | .collect(Collectors.toList()); 23 | return stream; 24 | } 25 | 26 | public static List getFriendsInRange(double enemyRange){ 27 | List stream = mc.world.getPlayers() 28 | .stream() 29 | .filter(e -> e != mc.player) 30 | .filter(e -> e.isAlive()) 31 | .filter(e -> Friends.get().isFriend(e)) 32 | .filter(e -> ((PlayerEntity) e).getHealth() > 0) 33 | .filter(e -> mc.player.distanceTo(e) < enemyRange) 34 | .sorted(Comparator.comparing(e -> mc.player.distanceTo(e))) 35 | .collect(Collectors.toList()); 36 | return stream; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/Task.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | public class Task { 4 | 5 | private boolean called; 6 | 7 | public Task() { 8 | this.called = false; 9 | } 10 | 11 | public void run(Runnable task) { 12 | if (!isCalled()) { 13 | task.run(); 14 | setCalled(); 15 | } 16 | } 17 | 18 | public void run(Runnable task, int times) { 19 | if (!isCalled()) { 20 | int i; 21 | 22 | for (i = 0; i < times; i++) { 23 | task.run(); 24 | } 25 | 26 | if (i >= times) setCalled(); 27 | } 28 | } 29 | 30 | public void reset() { 31 | this.called = false; 32 | } 33 | 34 | public boolean isCalled() { 35 | return this.called; 36 | } 37 | 38 | public void setCalled() { 39 | this.called = true; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/TimerUtils.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | public class TimerUtils { 4 | private long time = -1L; 5 | 6 | public TimerUtils reset() { 7 | this.time = System.nanoTime(); 8 | return this; 9 | } 10 | 11 | public boolean passedS(double s) { 12 | return this.passedMs((long) s * 1000L); 13 | } 14 | 15 | public boolean passedDms(double dms) { 16 | return this.passedMs((long) dms * 10L); 17 | } 18 | 19 | public boolean passedDs(double ds) { 20 | return this.passedMs((long) ds * 100L); 21 | } 22 | 23 | public boolean passedMs(long ms) { 24 | return this.passedNS(this.convertToNS(ms)); 25 | } 26 | 27 | public void setMs(long ms) { 28 | this.time = System.nanoTime() - this.convertToNS(ms); 29 | } 30 | 31 | public boolean passedNS(long ns) { 32 | return System.nanoTime() - this.time >= ns; 33 | } 34 | 35 | public long getPassedTimeMs() { 36 | return this.getMs(System.nanoTime() - this.time); 37 | } 38 | 39 | public long getMs(long time) { 40 | return time / 1000000L; 41 | } 42 | 43 | public long convertToNS(long time) { 44 | return time * 1000000L; 45 | } 46 | 47 | public boolean passedMillis(Integer integer) { 48 | return false; 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/TimerUtilsbanana.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import meteordevelopment.meteorclient.utils.world.TickRate; 4 | 5 | public class TimerUtilsbanana { 6 | private long nanoTime = -1L; 7 | 8 | public void reset() { 9 | nanoTime = System.nanoTime(); 10 | } 11 | 12 | // Set Times 13 | public void setTicks(long ticks) { nanoTime = System.nanoTime() - convertTicksToNano(ticks); } 14 | public void setNano(long time) { nanoTime = System.nanoTime() - time; } 15 | public void setMicro(long time) { nanoTime = System.nanoTime() - convertMicroToNano(time); } 16 | public void setMillis(long time) { nanoTime = System.nanoTime() - convertMillisToNano(time); } 17 | public void setSec(long time) { nanoTime = System.nanoTime() - convertSecToNano(time); } 18 | 19 | 20 | // Get Times 21 | public long getTicks() { return convertNanoToTicks(nanoTime); } 22 | public long getNano() { return nanoTime; } 23 | public long getMicro() { return convertNanoToMicro(nanoTime); } 24 | public long getMillis() { return convertNanoToMillis(nanoTime); } 25 | public long getSec() { return convertNanoToSec(nanoTime); } 26 | 27 | 28 | // Passed Time 29 | public boolean passedTicks(long ticks) { return passedNano(convertTicksToNano(ticks)); } 30 | public boolean passedNano(long time) { return System.nanoTime() - nanoTime >= time; } 31 | public boolean passedMicro(long time) { return passedNano(convertMicroToNano(time)); } 32 | public boolean passedMillis(long time) { return passedNano(convertMillisToNano(time)); } 33 | public boolean passedSec(long time) { return passedNano(convertSecToNano(time)); } 34 | 35 | 36 | // Tick Conversions 37 | public long convertMillisToTicks(long time) { return time / 50; } 38 | public long convertTicksToMillis(long ticks) { return ticks * 50; } 39 | public long convertNanoToTicks(long time) { return convertMillisToTicks(convertNanoToMillis(time)); } 40 | public long convertTicksToNano(long ticks) { return convertMillisToNano(convertTicksToMillis(ticks)); } 41 | 42 | 43 | // All Conversions To Smaller 44 | public long convertSecToMillis(long time) { return time * 1000L; } 45 | public long convertSecToMicro(long time) { return convertMillisToMicro(convertSecToMillis(time)); } 46 | public long convertSecToNano(long time) { return convertMicroToNano(convertMillisToMicro(convertSecToMillis(time))); } 47 | 48 | public long convertMillisToMicro(long time) { return time * 1000L; } 49 | public long convertMillisToNano(long time) { return convertMicroToNano(convertMillisToMicro(time)); } 50 | 51 | public long convertMicroToNano(long time) { return time * 1000L; } 52 | 53 | 54 | // All Conversions To Larger 55 | public long convertNanoToMicro(long time) { return time / 1000L; } 56 | public long convertNanoToMillis(long time) { return convertMicroToMillis(convertNanoToMicro(time)); } 57 | public long convertNanoToSec(long time) { return convertMillisToSec(convertMicroToMillis(convertNanoToMicro(time))); } 58 | 59 | public long convertMicroToMillis(long time) { return time / 1000L; } 60 | public long convertMicroToSec(long time) { return convertMillisToSec(convertMicroToMillis(time)); } 61 | 62 | public long convertMillisToSec(long time) { return time / 1000L; } 63 | 64 | 65 | // Syncs 66 | public static double getTPSMatch(boolean TPSSync) { 67 | return TPSSync ? (TickRate.INSTANCE.getTickRate() / 20) : 1; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/Utili.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import com.example.addon.Utils.bbc.world.BlockPosX; 4 | import net.minecraft.entity.Entity; 5 | import net.minecraft.entity.player.PlayerEntity; 6 | import net.minecraft.util.math.BlockPos; 7 | import net.minecraft.util.math.Box; 8 | import net.minecraft.util.math.Direction; 9 | import net.minecraft.util.math.MathHelper; 10 | 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | 14 | import static meteordevelopment.meteorclient.MeteorClient.mc; 15 | 16 | public class Utili { 17 | public static List getSphere(BlockPos centerPos, double radius, double height) { 18 | List blocks = new ArrayList<>(); 19 | 20 | for (int i = centerPos.getX() - (int) radius; i < centerPos.getX() + radius; i++) { 21 | for (int j = centerPos.getY() - (int) height; j < centerPos.getY() + height; j++) { 22 | for (int k = centerPos.getZ() - (int) radius; k < centerPos.getZ() + radius; k++) { 23 | BlockPosX pos = new BlockPosX(i, j, k); 24 | 25 | if (distanceTo(centerPos, pos) <= radius && !blocks.contains(pos)) blocks.add(pos); 26 | } 27 | } 28 | } 29 | 30 | return blocks; 31 | } 32 | 33 | public static boolean isSurrounded(PlayerEntity player) { 34 | List positions = new ArrayList<>(); 35 | List getEntityBoxes; 36 | 37 | for (BlockPosX blockPos : getSphere(player.getBlockPos(), 3, 1)) { 38 | if (!blockPos.replaceable()) continue; 39 | getEntityBoxes = mc.world.getOtherEntities(null, blockPos.box(), entity -> entity == player); 40 | if (!getEntityBoxes.isEmpty()) continue; 41 | 42 | for (Direction direction : Direction.values()) { 43 | if (direction == Direction.UP || direction == Direction.DOWN) continue; 44 | 45 | getEntityBoxes = mc.world.getOtherEntities(null, blockPos.offset(direction).box(), entity -> entity == player); 46 | if (!getEntityBoxes.isEmpty()) positions.add(blockPos); 47 | } 48 | } 49 | 50 | return positions.isEmpty(); 51 | } 52 | 53 | private static double distanceTo(BlockPos blockPos1, BlockPos blockPos2) { 54 | double d = blockPos1.getX() - blockPos2.getX(); 55 | double e = blockPos1.getY() - blockPos2.getY(); 56 | double f = blockPos1.getZ() - blockPos2.getZ(); 57 | return MathHelper.sqrt((float) (d * d + e * e + f * f)); 58 | } 59 | 60 | public static ArrayList getSurroundBlocks(PlayerEntity player) { 61 | ArrayList positions = new ArrayList<>(); 62 | List getEntityBoxes; 63 | 64 | for (BlockPos blockPos : getSphere(player.getBlockPos(), 3, 1)) { 65 | getEntityBoxes = mc.world.getOtherEntities(null, new Box(blockPos), entity -> entity == player); 66 | if (!getEntityBoxes.isEmpty()) continue; 67 | 68 | for (Direction direction : Direction.values()) { 69 | if (direction == Direction.UP || direction == Direction.DOWN) continue; 70 | 71 | getEntityBoxes = mc.world.getOtherEntities(null, new Box(blockPos.offset(direction)), entity -> entity == player); 72 | if (!getEntityBoxes.isEmpty()) positions.add(blockPos); 73 | } 74 | } 75 | 76 | return positions; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/Vec3dInfo.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import net.minecraft.entity.player.PlayerEntity; 4 | import net.minecraft.util.math.BlockPos; 5 | import net.minecraft.util.math.MathHelper; 6 | import net.minecraft.util.math.Vec3d; 7 | 8 | import static meteordevelopment.meteorclient.MeteorClient.mc; 9 | 10 | public class Vec3dInfo { 11 | 12 | //немного про век3д 13 | public static boolean isInRange(Vec3d vec3d, double radius) {return vec3d.isInRange(vec3d, radius);} 14 | public static boolean isWithinRange(Vec3d vec3d, double range) {return mc.player.getBlockPos().isWithinDistance(vec3d, range);} 15 | public static Vec3d add(Vec3d vec3d, Vec3d added) {return new Vec3d(vec3d.add(added).getX(), vec3d.add(added).getY(), vec3d.add(added).getZ());} 16 | public static Vec3d add(Vec3d vec3d, double x, double y, double z) {return new Vec3d(vec3d.add(x, y, z).getX(), vec3d.add(x, y, z).getY(), vec3d.add(x, y, z).getZ());} 17 | public static double X(Vec3d vec3d) {return vec3d.getX();} 18 | public static double Y(Vec3d vec3d) {return vec3d.getY();} 19 | public static double Z(Vec3d vec3d) {return vec3d.getZ();} 20 | public static boolean notNull(Vec3d vec3d) {return vec3d != null;} 21 | 22 | public static Vec3d getEyeVec(PlayerEntity entity) {return entity.getPos().add(0, entity.getEyeHeight(entity.getPose()), 0);} 23 | public static Vec3d closestVec3d(BlockPos blockpos) { 24 | if (blockpos == null) return new Vec3d(0.0, 0.0, 0.0); 25 | double x = MathHelper.clamp((mc.player.getX() - blockpos.getX()), 0.0, 1.0); 26 | double y = MathHelper.clamp((mc.player.getY() - blockpos.getY()), 0.0, 0.6); 27 | double z = MathHelper.clamp((mc.player.getZ() - blockpos.getZ()), 0.0, 1.0); 28 | return new Vec3d(blockpos.getX() + x, blockpos.getY() + y, blockpos.getZ() + z); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/Utils/VillagerEntityAccessor.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.Utils; 2 | 3 | import net.minecraft.entity.passive.VillagerEntity; 4 | import org.spongepowered.asm.mixin.Mixin; 5 | import org.spongepowered.asm.mixin.gen.Accessor; 6 | 7 | @Mixin(VillagerEntity.class) 8 | public interface VillagerEntityAccessor { 9 | @Accessor 10 | long getLastRestockTime(); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/BebraHackPVP/AntiBurrow.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.BebraHackPVP; 2 | //created by jabronyyy 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.*; 6 | import meteordevelopment.meteorclient.systems.modules.Module; 7 | import meteordevelopment.meteorclient.utils.entity.SortPriority; 8 | import meteordevelopment.meteorclient.utils.entity.TargetUtils; 9 | import meteordevelopment.meteorclient.utils.player.InvUtils; 10 | import meteordevelopment.meteorclient.utils.world.BlockUtils; 11 | import meteordevelopment.orbit.EventHandler; 12 | import net.minecraft.entity.player.PlayerEntity; 13 | import net.minecraft.item.Items; 14 | 15 | public class AntiBurrow extends Module { 16 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 17 | 18 | private final Setting range = sgGeneral.add(new DoubleSetting.Builder() 19 | .name("target-range") 20 | .description("The maximum distance to target players.") 21 | .defaultValue(4) 22 | .range(0, 5) 23 | .sliderMax(5) 24 | .build() 25 | ); 26 | 27 | private final Setting priority = sgGeneral.add(new EnumSetting.Builder() 28 | .name("target-priority") 29 | .description("How to filter targets within range.") 30 | .defaultValue(SortPriority.LowestDistance) 31 | .build() 32 | ); 33 | 34 | 35 | private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() 36 | .name("rotate") 37 | .description("Rotates towards the buttons when placing.") 38 | .defaultValue(true) 39 | .build() 40 | ); 41 | 42 | private PlayerEntity target = null; 43 | 44 | public AntiBurrow() { 45 | super(Addon.combat, "AntiBurrow", "Automatically places button in burrow to your opponent."); 46 | } 47 | 48 | @EventHandler 49 | private void onTick(TickEvent.Pre event) { 50 | if (TargetUtils.isBadTarget(target, range.get())) { 51 | target = TargetUtils.getPlayerTarget(range.get(), priority.get()); 52 | if (TargetUtils.isBadTarget(target, range.get())) return; 53 | } 54 | 55 | BlockUtils.place(target.getBlockPos(), InvUtils.findInHotbar(Items.STONE_BUTTON), rotate.get(), 0, false); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/BebraHackPVP/AntiCrystal.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.BebraHackPVP; 2 | 3 | import com.example.addon.Addon; 4 | import com.google.common.collect.Streams; 5 | import meteordevelopment.orbit.EventHandler; 6 | import meteordevelopment.meteorclient.events.world.TickEvent; 7 | import meteordevelopment.meteorclient.systems.modules.Module; 8 | import meteordevelopment.meteorclient.settings.BoolSetting; 9 | import meteordevelopment.meteorclient.settings.DoubleSetting; 10 | import meteordevelopment.meteorclient.settings.EnumSetting; 11 | import meteordevelopment.meteorclient.settings.Setting; 12 | import meteordevelopment.meteorclient.settings.SettingGroup; 13 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 14 | import meteordevelopment.meteorclient.utils.player.InvUtils; 15 | import meteordevelopment.meteorclient.utils.world.BlockUtils; 16 | 17 | import net.minecraft.entity.decoration.EndCrystalEntity; 18 | import net.minecraft.item.Item; 19 | import net.minecraft.item.Items; 20 | 21 | 22 | import java.util.Comparator; 23 | import java.util.Optional; 24 | 25 | public class AntiCrystal extends Module { 26 | 27 | public enum Mode { 28 | PressurePlate, 29 | Button 30 | } 31 | 32 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 33 | 34 | private final Setting mode = sgGeneral.add(new EnumSetting.Builder() 35 | .name("mode") 36 | .description("The mode at which AntiCrystal operates.") 37 | .defaultValue(Mode.PressurePlate) 38 | .build() 39 | ); 40 | 41 | private final Setting range = sgGeneral.add(new DoubleSetting.Builder() 42 | .name("range") 43 | .description("The range to place Pressure Plates/Buttons.") 44 | .min(1) 45 | .max(10) 46 | .defaultValue(1) 47 | .build() 48 | ); 49 | 50 | private final Setting rotate = sgGeneral.add(new BoolSetting.Builder() 51 | .name("rotate") 52 | .description("Rotate.") 53 | .defaultValue(true) 54 | .build() 55 | ); 56 | 57 | public AntiCrystal() { 58 | super(Addon.combat, "anti-crystal", "Stops End Crystals from doing damage to you."); 59 | } 60 | 61 | private static final Item[] BUTTONS = { Items.ACACIA_BUTTON, Items.BIRCH_BUTTON, Items.CRIMSON_BUTTON, Items.DARK_OAK_BUTTON, Items.JUNGLE_BUTTON, Items.OAK_BUTTON, Items.POLISHED_BLACKSTONE_BUTTON, Items.SPRUCE_BUTTON, Items.STONE_BUTTON, Items.WARPED_BUTTON }; 62 | private static final Item[] PLATES = { Items.ACACIA_PRESSURE_PLATE, Items.BIRCH_PRESSURE_PLATE, Items.CRIMSON_PRESSURE_PLATE, Items.DARK_OAK_PRESSURE_PLATE, Items.JUNGLE_PRESSURE_PLATE, Items.OAK_PRESSURE_PLATE, Items.POLISHED_BLACKSTONE_PRESSURE_PLATE, Items.SPRUCE_PRESSURE_PLATE, Items.STONE_PRESSURE_PLATE, Items.WARPED_PRESSURE_PLATE}; 63 | 64 | @EventHandler 65 | private void onTick(TickEvent.Post event) { 66 | assert mc.world != null; 67 | assert mc.player != null; 68 | 69 | Optional crystalTarget = Streams.stream(mc.world.getEntities()) 70 | .filter(e -> (e instanceof EndCrystalEntity)) 71 | .filter(e -> e.distanceTo(mc.player) <= range.get() * 2) 72 | .filter(e -> mc.world.getBlockState(e.getBlockPos()).isAir()) 73 | .min(Comparator.comparingDouble(o -> o.distanceTo(mc.player))) 74 | .map(e -> (EndCrystalEntity) e); 75 | 76 | crystalTarget.ifPresent(crystal -> { 77 | 78 | if (mode.get() == Mode.PressurePlate) { 79 | FindItemResult result = InvUtils.find(PLATES); 80 | if (!result.found()) return; 81 | BlockUtils.place(crystal.getBlockPos(), result, rotate.get(), 100); 82 | } else if (mode.get() == Mode.Button) { 83 | FindItemResult result = InvUtils.find(BUTTONS); 84 | if (!result.found()) return; 85 | BlockUtils.place(crystal.getBlockPos(), result, rotate.get(), 100); 86 | } 87 | }); 88 | 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/BebraHackPVP/AntiSurroundBlocks.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.BebraHackPVP; 2 | 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.*; 6 | import meteordevelopment.meteorclient.systems.modules.Module; 7 | import meteordevelopment.meteorclient.utils.entity.SortPriority; 8 | import meteordevelopment.meteorclient.utils.entity.TargetUtils; 9 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 10 | import meteordevelopment.meteorclient.utils.player.InvUtils; 11 | import meteordevelopment.meteorclient.utils.world.BlockUtils; 12 | import meteordevelopment.orbit.EventHandler; 13 | import net.minecraft.entity.player.PlayerEntity; 14 | import net.minecraft.item.Items; 15 | import net.minecraft.util.math.BlockPos; 16 | import net.minecraft.util.math.Direction; 17 | /* 18 | @Author Ya_pank 19 | not sunochek code 20 | */ 21 | 22 | public class AntiSurroundBlocks extends Module { 23 | public enum Mode {Button, Web, Lever, Glass, String} 24 | 25 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 26 | private final SettingGroup sgMode = settings.createGroup("Mode"); 27 | 28 | private final Setting range = sgGeneral.add(new DoubleSetting.Builder().name("Range").description("The maximum distance to target players/place range.").defaultValue(4).range(0, 5).sliderMax(5).build()); 29 | private final Setting rotate = sgGeneral.add(new BoolSetting.Builder().name("Rotate").description("Rotates when placing.").defaultValue(true).build()); 30 | private final Setting disable = sgGeneral.add(new BoolSetting.Builder().name("AutoDisable").description("Disabling after place.").defaultValue(true).build()); 31 | //private final Setting support = sgGeneral.add(new BoolSetting.Builder().name("Support").description("PLacing Obsidian in bottom.").defaultValue(false).build()); 32 | //modes 33 | public final Setting mode = sgMode.add(new EnumSetting.Builder().name("Mode").description("AntiSurroundBlocks mode.").defaultValue(AntiSurroundBlocks.Mode.Button).build()); 34 | //render 35 | 36 | private PlayerEntity target; 37 | private FindItemResult item; 38 | private BlockPos pos; 39 | 40 | 41 | public AntiSurroundBlocks() { 42 | super(Addon.combat, "AntiSurroundBlocks", "Automatically trying to fuck players surround."); 43 | } 44 | 45 | @Override 46 | public void onActivate() { 47 | target = null; 48 | pos = null; 49 | } 50 | 51 | @EventHandler 52 | private void onTick(TickEvent.Pre event) { 53 | target = TargetUtils.getPlayerTarget(range.get(), SortPriority.LowestDistance); 54 | if (target == null) return; 55 | pos = target.getBlockPos(); 56 | switch (mode.get()) { 57 | case Button -> item = InvUtils.findInHotbar(Items.CRIMSON_BUTTON); 58 | case Web -> item = InvUtils.findInHotbar(Items.COBWEB); 59 | case Glass -> item = InvUtils.findInHotbar(Items.GLASS_PANE); 60 | case Lever -> item = InvUtils.findInHotbar(Items.LEVER); 61 | case String -> item = InvUtils.findInHotbar(Items.STRING); 62 | } 63 | /* 64 | if (support.get()) { 65 | doPlace(target.getBlockPos().down(), InvUtils.findInHotbar(Items.OBSIDIAN)); 66 | } 67 | */ 68 | 69 | for (Direction dir : Direction.values()) { 70 | if (dir == Direction.DOWN || dir == Direction.UP) continue; 71 | boolean canPlace = BlockUtils.canPlace(pos.offset(dir)); 72 | if (canPlace) { 73 | doPlace(target.getBlockPos(), item); 74 | if (disable.get()) { 75 | toggle(); 76 | } 77 | return; 78 | } 79 | } 80 | } 81 | 82 | private void doPlace(BlockPos blockPos, FindItemResult findItemResult) { 83 | if (mode.get().equals(Mode.Button) || mode.get().equals(Mode.Web) || mode.get().equals(Mode.Glass) || mode.get().equals(Mode.String)) { 84 | for (Direction dir : Direction.values()) { 85 | if (dir == Direction.DOWN || dir == Direction.UP) continue; 86 | BlockUtils.place(pos.offset(dir), item, rotate.get(), 0); 87 | } 88 | } else { 89 | for (Direction dir : Direction.values()) { 90 | if (dir == Direction.DOWN || dir == Direction.UP) continue; 91 | BlockUtils.place(pos.offset(dir).down(), item, rotate.get(), 0); 92 | } 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/BebraHackPVP/AutoEz.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.BebraHackPVP; 2 | 3 | import com.example.addon.Addon; 4 | import it.unimi.dsi.fastutil.objects.Object2IntMap; 5 | import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; 6 | import meteordevelopment.meteorclient.events.game.GameJoinedEvent; 7 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 8 | import meteordevelopment.meteorclient.events.world.TickEvent; 9 | import meteordevelopment.meteorclient.settings.*; 10 | import meteordevelopment.meteorclient.systems.friends.Friends; 11 | import meteordevelopment.meteorclient.systems.modules.Module; 12 | import meteordevelopment.meteorclient.utils.Utils; 13 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 14 | import meteordevelopment.orbit.EventHandler; 15 | import net.minecraft.entity.Entity; 16 | import net.minecraft.entity.player.PlayerEntity; 17 | import net.minecraft.network.packet.s2c.play.EntityStatusS2CPacket; 18 | import net.minecraft.util.Formatting; 19 | 20 | import java.util.List; 21 | import java.util.Random; 22 | import java.util.UUID; 23 | 24 | public class AutoEz extends Module { 25 | private final SettingGroup sgEz = settings.getDefaultGroup(); 26 | private final Setting messages = sgEz.add(new StringSetting.Builder().name("messages").defaultValue("Ez").build()); 27 | private final Setting ignoreFriends = sgEz.add(new BoolSetting.Builder().name("ignore-friends").defaultValue(true).build()); 28 | 29 | private final Object2IntMap totemPopMap = new Object2IntOpenHashMap<>(); 30 | private final Object2IntMap chatIdMap = new Object2IntOpenHashMap<>(); 31 | private final Random random = new Random(); 32 | 33 | public AutoEz() { 34 | super(Addon.combat, "auto-ez", " "); 35 | } 36 | 37 | @Override 38 | public void onActivate() { 39 | totemPopMap.clear(); 40 | chatIdMap.clear(); 41 | } 42 | 43 | @EventHandler 44 | private void onGameJoin(GameJoinedEvent event) { 45 | totemPopMap.clear(); 46 | chatIdMap.clear(); 47 | } 48 | 49 | @EventHandler 50 | private void onReceivePacket(PacketEvent.Receive event) { 51 | if (!(event.packet instanceof EntityStatusS2CPacket p)) return; 52 | 53 | if (p.getStatus() != 35) return; 54 | 55 | Entity entity = p.getEntity(mc.world); 56 | 57 | if (!(entity instanceof PlayerEntity)) return; 58 | 59 | if (entity.equals(mc.player) 60 | || (Friends.get().isFriend(((PlayerEntity) entity)) && ignoreFriends.get()) 61 | ) return; 62 | 63 | synchronized (totemPopMap) { 64 | int pops = totemPopMap.getOrDefault(entity.getUuid(), 0); 65 | totemPopMap.put(entity.getUuid(), ++pops); 66 | } 67 | } 68 | 69 | @EventHandler 70 | private void onTick(TickEvent.Post event) { 71 | synchronized (totemPopMap) { 72 | for (PlayerEntity player : mc.world.getPlayers()) { 73 | if (!totemPopMap.containsKey(player.getUuid())) continue; 74 | if (player.deathTime > 0 || player.getHealth() <= 0) { 75 | int pops = totemPopMap.removeInt(player.getUuid()); 76 | String text = messages.get(); 77 | mc.player.sendChatMessage(text); 78 | chatIdMap.removeInt(player.getUuid()); 79 | } 80 | } 81 | } 82 | } 83 | 84 | private int getChatId(Entity entity) { 85 | return chatIdMap.computeIfAbsent(entity.getUuid(), value -> random.nextInt()); 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/BebraHackPVP/SelfAnvilBEBRA.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.BebraHackPVP; 2 | 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.BlockListSetting; 6 | import meteordevelopment.meteorclient.settings.BoolSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.meteorclient.utils.player.InvUtils; 11 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 12 | import meteordevelopment.meteorclient.utils.world.BlockUtils; 13 | import meteordevelopment.orbit.EventHandler; 14 | import net.minecraft.block.Block; 15 | import net.minecraft.block.BlockState; 16 | import net.minecraft.block.Blocks; 17 | import net.minecraft.util.math.BlockPos; 18 | import java.util.Collections; 19 | import java.util.List; 20 | 21 | public class SelfAnvilBEBRA extends Module { 22 | //private final SettingGroup sgGeneral = settings.createGroup("general"); 23 | 24 | //private final Setting oneAnvil = sgGeneral.add(new BoolSetting.Builder().name("one").description("For no airplace servers.").defaultValue(false).build()); 25 | 26 | //private final Setting NoAirPlace = sgGeneral.add(new BoolSetting.Builder().name("NoAirPlace").description("For no airplace servers.").defaultValue(false).build()); 27 | private final SettingGroup sgMisc = settings.createGroup("Misc"); 28 | 29 | private final Setting checkEntity = sgMisc.add(new BoolSetting.Builder().name("check-entity").description("entity check").defaultValue(true).build()); 30 | private final Setting center = sgMisc.add(new BoolSetting.Builder().name("center").description("Teleports you to the center of the block.").defaultValue(true).build()); 31 | 32 | private final Setting disableOnYChange = sgMisc.add(new BoolSetting.Builder().name("disable-on-y-change").description("Automatically disables when your y level (step, jumping, atc).").defaultValue(false).build()); 33 | private final Setting rotate = sgMisc.add(new BoolSetting.Builder().name("rotate").description("Automatically faces towards the Anvil being placed.").defaultValue(false).build()); 34 | private final Setting> blocks = sgMisc.add(new BlockListSetting.Builder().name("block").description("What blocks to use for surround.").defaultValue(Collections.singletonList(Blocks.ANVIL)).filter(this::blockFilter).build()); 35 | 36 | private final BlockPos.Mutable blockPos = new BlockPos.Mutable(); 37 | private boolean return_; 38 | 39 | public SelfAnvilBEBRA() { 40 | super(Addon.combat, "AutoAnvilBEBRA", "puts in throws off anvils on you"); 41 | } 42 | 43 | @Override 44 | public void onActivate() { 45 | if (center.get()) PlayerUtils.centerPlayer(); 46 | } 47 | 48 | @EventHandler 49 | private void onTick(TickEvent.Pre event) { 50 | 51 | place(0, 2, 0); 52 | if (return_) return; 53 | 54 | /* 55 | if(oneAnvil .get()) { 56 | place(0, 2, 0); 57 | toggle(); 58 | } 59 | 60 | */ 61 | } 62 | 63 | private boolean blockFilter(Block block) { 64 | return block.getBlastResistance() >= 600; 65 | } 66 | 67 | private boolean place(int x, int y, int z) { 68 | setBlockPos(x, y, z); 69 | BlockState blockState = mc.world.getBlockState(blockPos); 70 | if (!blockState.getMaterial().isReplaceable()) return true; 71 | if (BlockUtils.place(blockPos, InvUtils.findInHotbar(itemStack -> blocks.get().contains(Block.getBlockFromItem(itemStack.getItem()))), rotate.get(), 100, checkEntity.get())) { 72 | return_ = true; 73 | } 74 | return false; 75 | } 76 | 77 | private void setBlockPos(int x, int y, int z) { 78 | blockPos.set(mc.player.getX() + x, mc.player.getY() + y, mc.player.getZ() + z); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/BebraHackRender/BurrowESP.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.BebraHackRender; 2 | /* 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.systems.modules.Categories; 5 | import com.example.addon.Utils.BEntityUtils; 6 | import meteordevelopment.meteorclient.events.render.Render3DEvent; 7 | import meteordevelopment.meteorclient.events.world.TickEvent; 8 | import meteordevelopment.meteorclient.renderer.ShapeMode; 9 | import meteordevelopment.meteorclient.settings.*; 10 | import meteordevelopment.meteorclient.systems.modules.Module; 11 | import meteordevelopment.meteorclient.utils.entity.SortPriority; 12 | import meteordevelopment.meteorclient.utils.entity.TargetUtils; 13 | import meteordevelopment.meteorclient.utils.render.color.SettingColor; 14 | import meteordevelopment.orbit.EventHandler; 15 | import net.minecraft.entity.player.PlayerEntity; 16 | import net.minecraft.util.math.BlockPos; 17 | 18 | public class BurrowESP extends Module { 19 | private final SettingGroup sgRender = settings.createGroup("Render"); 20 | 21 | 22 | // Render 23 | private final Setting shapeMode = sgRender.add(new EnumSetting.Builder() 24 | .name("shape-mode") 25 | .description("How the shapes are rendered.") 26 | .defaultValue(ShapeMode.Both) 27 | .build() 28 | ); 29 | 30 | private final Setting sideColor = sgRender.add(new ColorSetting.Builder() 31 | .name("side-color") 32 | .description("The side color of the rendering.") 33 | .defaultValue(new SettingColor(230, 0, 255, 5)) 34 | .visible(() -> shapeMode.get() != ShapeMode.Lines) 35 | .build() 36 | ); 37 | 38 | private final Setting lineColor = sgRender.add(new ColorSetting.Builder() 39 | .name("line-color") 40 | .description("The line color of the rendering.") 41 | .defaultValue(new SettingColor(250, 0, 255, 255)) 42 | .visible(() -> shapeMode.get() != ShapeMode.Sides) 43 | .build() 44 | ); 45 | 46 | private final Setting renderWebbed = sgRender.add(new BoolSetting.Builder() 47 | .name("Render webbed") 48 | .description("Will render if the target is webbed.") 49 | .defaultValue(true) 50 | .build() 51 | ); 52 | 53 | private final Setting webSideColor = sgRender.add(new ColorSetting.Builder() 54 | .name("web-side-color") 55 | .description("The side color of the rendering for webs.") 56 | .defaultValue(new SettingColor(240, 250, 65, 35)) 57 | .visible(() -> shapeMode.get() != ShapeMode.Lines && renderWebbed.get()) 58 | .build() 59 | ); 60 | 61 | private final Setting webLineColor = sgRender.add(new ColorSetting.Builder() 62 | .name("web-line-color") 63 | .description("The line color of the rendering for webs.") 64 | .defaultValue(new SettingColor(0, 0, 0, 0)) 65 | .visible(() -> shapeMode.get() != ShapeMode.Sides && renderWebbed.get()) 66 | .build() 67 | ); 68 | 69 | 70 | public BurrowESP() { 71 | super(Addon.render, "Burrow-ESP", "Displays if the closest target to you is burrowed / webbed."); 72 | } 73 | 74 | 75 | public BlockPos target; 76 | public boolean isTargetWebbed; 77 | public boolean isTargetBurrowed; 78 | 79 | @EventHandler 80 | private void onTick(TickEvent.Post event) { 81 | PlayerEntity targetEntity = TargetUtils.getPlayerTarget(mc.interactionManager.getReachDistance() + 2, SortPriority.LowestDistance); 82 | 83 | if (TargetUtils.isBadTarget(targetEntity, mc.interactionManager.getReachDistance() + 2)) { 84 | target = null; 85 | } else if (renderWebbed.get() && BEntityUtils.isWebbed(targetEntity)) { 86 | target = targetEntity.getBlockPos(); 87 | } else if (BEntityUtils.isBurrowed(targetEntity, BEntityUtils.BlastResistantType.Any)) { 88 | target = targetEntity.getBlockPos(); 89 | } else target = null; 90 | 91 | isTargetWebbed = (target != null && BEntityUtils.isWebbed(targetEntity)); 92 | isTargetBurrowed = (target != null && BEntityUtils.isBurrowed(targetEntity, BEntityUtils.BlastResistantType.Any)); 93 | } 94 | 95 | @EventHandler 96 | private void onRender(Render3DEvent event) { 97 | if (target == null) return; 98 | if (isTargetWebbed) event.renderer.box(target, webSideColor.get(), webLineColor.get(), shapeMode.get(), 0); 99 | else if (isTargetBurrowed) event.renderer.box(target, sideColor.get(), lineColor.get(), shapeMode.get(), 0); 100 | } 101 | } 102 | 103 | */ 104 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/BebraHackRender/Confetti.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.BebraHackRender; 2 | /* 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.systems.modules.Module; 5 | import meteordevelopment.meteorclient.settings.ColorSetting; 6 | import meteordevelopment.meteorclient.settings.Setting; 7 | import meteordevelopment.meteorclient.settings.SettingGroup; 8 | import meteordevelopment.meteorclient.utils.render.color.SettingColor; 9 | import net.minecraft.util.math.Vec3d; 10 | 11 | 12 | public class Confetti extends Module { 13 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 14 | 15 | private final Setting colorOne = sgGeneral.add(new ColorSetting.Builder() 16 | .name("color-one") 17 | .description("The first confetti color to change.") 18 | .defaultValue(new SettingColor(102, 0, 0, 255)) 19 | .build() 20 | ); 21 | 22 | private final Setting colorTwo = sgGeneral.add(new ColorSetting.Builder() 23 | .name("color-two") 24 | .description("The second confetti color to change.") 25 | .defaultValue(new SettingColor(102, 0, 0, 255)) 26 | .build() 27 | ); 28 | 29 | public Confetti() { 30 | super(Addon.render, "confetti", "Changes the color of the totem pop particles."); 31 | } 32 | 33 | public Vec3d getColorOne() { 34 | return getDoubleVectorColor(colorOne); 35 | } 36 | 37 | public Vec3d getColorTwo() { 38 | return getDoubleVectorColor(colorTwo); 39 | } 40 | 41 | public Vec3d getDoubleVectorColor(Setting colorSetting) { 42 | return new Vec3d((double) colorSetting.get().r / 255, (double) colorSetting.get().g / 255, (double) colorSetting.get().b / 255); 43 | } 44 | } 45 | 46 | 47 | */ 48 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/BebraHackRender/KillEffects.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.BebraHackRender; 2 | 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.systems.modules.Categories; 5 | import com.example.addon.Utils.BWorldUtils; 6 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 7 | import meteordevelopment.meteorclient.settings.BoolSetting; 8 | import meteordevelopment.meteorclient.settings.IntSetting; 9 | import meteordevelopment.meteorclient.settings.Setting; 10 | import meteordevelopment.meteorclient.settings.SettingGroup; 11 | import meteordevelopment.meteorclient.systems.modules.Module; 12 | import meteordevelopment.orbit.EventHandler; 13 | import net.minecraft.entity.Entity; 14 | 15 | import static com.example.addon.Utils.BEntityUtils.deadEntity; 16 | import static com.example.addon.Utils.BEntityUtils.isDeathPacket; 17 | 18 | public class KillEffects extends Module { 19 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 20 | 21 | 22 | // General 23 | private final Setting range = sgGeneral.add(new IntSetting.Builder() 24 | .name("range") 25 | .description("How far away the lightning is allowed to spawn from you.") 26 | .defaultValue(16) 27 | .sliderRange(0,256) 28 | .build() 29 | ); 30 | 31 | private final Setting avoidSelf = sgGeneral.add(new BoolSetting.Builder() 32 | .name("avoid-self") 33 | .description("Will not render your own deaths.") 34 | .defaultValue(true) 35 | .build() 36 | ); 37 | 38 | 39 | public KillEffects() { 40 | super(Addon.render, "kill-effects", "Spawns a lightning where a player dies."); 41 | } 42 | 43 | 44 | @EventHandler 45 | private void onReceivePacket(PacketEvent.Receive event) { 46 | if (isDeathPacket(event)) { 47 | Entity player = deadEntity; 48 | if (player == mc.player && avoidSelf.get()) return; 49 | if (mc.player.distanceTo(player) > range.get()) return; 50 | 51 | double playerX = player.getX(); 52 | double playerY = player.getY(); 53 | double playerZ = player.getZ(); 54 | 55 | BWorldUtils.spawnLightning(playerX, playerY, playerZ); 56 | } 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/BebraHackRender/TimeAnimator.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.BebraHackRender; 2 | 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.events.packets.PacketEvent; 5 | import meteordevelopment.meteorclient.events.world.TickEvent; 6 | import meteordevelopment.meteorclient.settings.IntSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.orbit.EventHandler; 11 | import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket; 12 | 13 | public class TimeAnimator extends Module { 14 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 15 | 16 | 17 | // General 18 | private final Setting speed = sgGeneral.add(new IntSetting.Builder() 19 | .name("speed") 20 | .description("How fast the day and night cycle should be.") 21 | .defaultValue(100) 22 | .sliderRange(1, 500) 23 | .build() 24 | ); 25 | 26 | 27 | public TimeAnimator() { 28 | super(Addon.render, "time-animator", "Speeds up the day and night cycle."); 29 | } 30 | 31 | 32 | private long timer; 33 | 34 | 35 | @Override 36 | public void onActivate() { 37 | mc.world.setTimeOfDay(mc.world.getTime()); 38 | timer = 0; 39 | } 40 | 41 | @Override 42 | public void onDeactivate() { 43 | mc.world.setTimeOfDay(mc.world.getTime()); 44 | timer = 0; 45 | } 46 | 47 | @EventHandler 48 | private void onPacketReceive(PacketEvent.Receive event) { 49 | if (event.packet instanceof WorldTimeUpdateS2CPacket) { 50 | event.cancel(); 51 | } 52 | } 53 | 54 | @EventHandler 55 | private void onTick(TickEvent.Post event) { 56 | timer ++; 57 | mc.world.setTimeOfDay(timer * (speed.get())); 58 | 59 | if (mc.world.getTimeOfDay() >= 24000 || mc.world.getTimeOfDay() <= -24000){ 60 | timer = 0; 61 | mc.world.setTimeOfDay(0); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/hud/Killfeed.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.hud; 2 | 3 | import com.example.addon.Addon; 4 | import com.example.addon.Utils.Formatter; 5 | import meteordevelopment.meteorclient.systems.hud.Alignment; 6 | import meteordevelopment.meteorclient.systems.hud.Hud; 7 | import meteordevelopment.meteorclient.systems.hud.HudRenderer; 8 | import meteordevelopment.meteorclient.systems.hud.HudElement; 9 | import meteordevelopment.meteorclient.systems.hud.HudElementInfo; 10 | 11 | import java.util.ArrayList; 12 | 13 | public class Killfeed extends HudElement { 14 | 15 | public static final HudElementInfo INFO = new HudElementInfo<>(Addon.HUD_GROUP, "killfeed", "Display a list of your kills", Killfeed::new); 16 | 17 | private final ArrayList feed = new ArrayList<>(); 18 | 19 | private void updateFeed() { 20 | feed.clear(); 21 | if (Formatter.hasKillFeed()) feed.addAll(Formatter.getKillFeed()); 22 | } 23 | 24 | public Killfeed() { 25 | super(INFO); 26 | } 27 | 28 | @Override 29 | public void tick(HudRenderer renderer) { 30 | updateFeed(); 31 | double width = 0; 32 | double height = 0; 33 | int i = 0; 34 | if (feed.isEmpty()) { 35 | String t = "Killfeed"; 36 | width = Math.max(width, renderer.textWidth(t)); 37 | height += renderer.textHeight(); 38 | } else { 39 | width = Math.max(width, renderer.textWidth("Killfeed")); 40 | height += renderer.textHeight(); 41 | for (String bind : feed) { 42 | width = Math.max(width, renderer.textWidth(bind)); 43 | height += renderer.textHeight(); 44 | if (i > 0) height += 2; 45 | i++; 46 | } 47 | } 48 | setSize(width, height); 49 | } 50 | 51 | @Override 52 | public void render(HudRenderer renderer) { 53 | Hud hud = Hud.get(); 54 | var color = hud.textColors.get().get(0); 55 | updateFeed(); 56 | double x = getX(); 57 | double y = getY(); 58 | if (isInEditor()) { 59 | renderer.text("Killfeed", x, y, color, false); 60 | return; 61 | } 62 | int i = 0; 63 | if (feed.isEmpty()) { 64 | String t = "Killfeed"; 65 | renderer.text(t, x + alignX(renderer.textWidth(t), Alignment.Auto), y, color, false); 66 | } else { 67 | renderer.text("Killfeed", x + alignX(renderer.textWidth("Killfeed"), Alignment.Auto), y, color, false); 68 | y += renderer.textHeight(); 69 | for (String bind : feed) { 70 | renderer.text(bind, x + alignX(renderer.textWidth(bind), Alignment.Auto), y, color, false); 71 | y += renderer.textHeight(); 72 | if (i > 0) y += 2; 73 | i++; 74 | } 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/misc/AutoCraft.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.misc; 2 | 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.BoolSetting; 6 | import meteordevelopment.meteorclient.settings.ItemListSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.orbit.EventHandler; 11 | import net.minecraft.client.gui.screen.recipebook.RecipeResultCollection; 12 | import net.minecraft.item.Item; 13 | import net.minecraft.recipe.Recipe; 14 | import net.minecraft.screen.CraftingScreenHandler; 15 | import net.minecraft.screen.slot.SlotActionType; 16 | 17 | import java.util.Arrays; 18 | import java.util.List; 19 | 20 | public class AutoCraft extends Module { 21 | 22 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 23 | 24 | private final Setting> items = sgGeneral.add(new ItemListSetting.Builder() 25 | .name("items") 26 | .description("Items you want to get crafted.") 27 | .defaultValue(Arrays.asList()) 28 | .build() 29 | ); 30 | 31 | private final Setting antiDesync = sgGeneral.add(new BoolSetting.Builder() 32 | .name("anti-desync") 33 | .description("Try to prevent inventory desync.") 34 | .defaultValue(false) 35 | .build() 36 | ); 37 | 38 | private final Setting craftAll = sgGeneral.add(new BoolSetting.Builder() 39 | .name("craft-all") 40 | .description("Crafts maximum possible amount amount per craft (shift-clicking)") 41 | .defaultValue(false) 42 | .build() 43 | ); 44 | 45 | private final Setting drop = sgGeneral.add(new BoolSetting.Builder() 46 | .name("drop") 47 | .description("Automatically drops crafted items (useful for when not enough inventory space)") 48 | .defaultValue(false) 49 | .build() 50 | ); 51 | 52 | public AutoCraft() { 53 | super(Addon.misc, "auto-craft", "Automatically crafts items."); 54 | } 55 | 56 | @EventHandler 57 | private void onTick(TickEvent.Post event) { 58 | if (mc.interactionManager == null) return; 59 | if (items.get().isEmpty()) return; 60 | 61 | if (!(mc.player.currentScreenHandler instanceof CraftingScreenHandler)) return; 62 | 63 | 64 | if (antiDesync.get()) 65 | mc.player.getInventory().updateItems(); 66 | 67 | // Danke schön GhostTypes 68 | // https://github.com/GhostTypes/orion/blob/main/src/main/java/me/ghosttypes/orion/modules/main/AutoBedCraft.java 69 | CraftingScreenHandler currentScreenHandler = (CraftingScreenHandler) mc.player.currentScreenHandler; 70 | List itemList = items.get(); 71 | List recipeResultCollectionList = mc.player.getRecipeBook().getOrderedResults(); 72 | for (RecipeResultCollection recipeResultCollection : recipeResultCollectionList) { 73 | for (Recipe recipe : recipeResultCollection.getRecipes(true)) { 74 | if (!itemList.contains(recipe.getOutput().getItem())) continue; 75 | mc.interactionManager.clickRecipe(currentScreenHandler.syncId, recipe, craftAll.get()); 76 | mc.interactionManager.clickSlot(currentScreenHandler.syncId, 0, 1, 77 | drop.get() ? SlotActionType.THROW : SlotActionType.QUICK_MOVE, mc.player); 78 | } 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/misc/AutoLogin.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.misc; 2 | 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.events.game.GameLeftEvent; 5 | import meteordevelopment.meteorclient.events.world.TickEvent; 6 | import meteordevelopment.meteorclient.settings.*; 7 | import meteordevelopment.meteorclient.systems.modules.Module; 8 | import meteordevelopment.orbit.EventHandler; 9 | 10 | public class AutoLogin extends Module { 11 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 12 | 13 | private final Setting loginCommand = sgGeneral.add(new StringSetting.Builder() 14 | .name("login-command") 15 | .description("Command to login.") 16 | .defaultValue("login 1234") 17 | .build() 18 | ); 19 | 20 | private final Setting serverOnly = sgGeneral.add(new BoolSetting.Builder() 21 | .name("server-only") 22 | .description("Use Auto Login only on server.") 23 | .defaultValue(true) 24 | .build() 25 | ); 26 | 27 | private final Setting delay = sgGeneral.add(new IntSetting.Builder() 28 | .name("delay") 29 | .description("Delay before send command in ticks (20 ticks = 1 sec).") 30 | .defaultValue(20) 31 | .range(1, 120) 32 | .sliderRange(1, 40) 33 | .build() 34 | ); 35 | 36 | boolean work; 37 | private int timer; 38 | 39 | public AutoLogin() { 40 | super(Addon.misc, "auto-login", "Automatically logs in your account."); 41 | } 42 | 43 | @Override 44 | public void onActivate() { 45 | timer = 0; 46 | work = true; 47 | } 48 | 49 | //Shitty code anyway work 50 | @EventHandler 51 | private void onTick(TickEvent.Post event) { 52 | if (serverOnly.get() && mc.getServer() != null && mc.getServer().isSingleplayer()) return; 53 | if (timer >= delay.get() && !loginCommand.get().isEmpty() && work) { 54 | work = false; 55 | mc.player.sendCommand(loginCommand.get().replace("/", "")); 56 | timer = 0; 57 | } else timer ++; 58 | } 59 | 60 | @EventHandler 61 | private void onGameLeft(GameLeftEvent event) { 62 | work = true; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/misc/MEGA_DUPEprank.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.misc; 2 | 3 | import com.example.addon.Addon; 4 | import com.example.addon.Utils.Task; 5 | import meteordevelopment.meteorclient.events.world.TickEvent; 6 | import meteordevelopment.meteorclient.systems.modules.Module; 7 | import meteordevelopment.meteorclient.utils.Utils; 8 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 9 | import meteordevelopment.meteorclient.utils.player.InvUtils; 10 | import meteordevelopment.meteorclient.utils.player.PlayerUtils; 11 | import meteordevelopment.orbit.EventHandler; 12 | import net.minecraft.block.entity.BlockEntity; 13 | import net.minecraft.block.entity.ChestBlockEntity; 14 | import net.minecraft.item.Items; 15 | import net.minecraft.util.math.BlockPos; 16 | 17 | import java.util.ArrayList; 18 | import java.util.Comparator; 19 | 20 | import static com.example.addon.Utils.BlockInfo.*; 21 | import static com.example.addon.Utils.EntityInfo.getBlockPos; 22 | 23 | public class MEGA_DUPEprank extends Module { 24 | //private final SettingGroup sgGeneral = settings.getDefaultGroup(); 25 | 26 | public MEGA_DUPEprank() { 27 | super(Addon.misc, "MEGA_DUPEprank", "Look code."); 28 | } 29 | //функция должна была ломать сундуки и подбирать лут, но майн крашил, поэтому я сделал рофл название, чтобы был хоть какой-то смысл// 30 | //the function was supposed to break chests and pick up loot, but the minecraft was dying, so I made a fan name to make at least some sense// 31 | private FindItemResult axe; 32 | private BlockPos pos; 33 | private int x,y,z; 34 | private Stage stage; 35 | 36 | private final Task chatTask = new Task(); 37 | 38 | @Override 39 | public void onActivate() { 40 | stage = Stage.Find; 41 | 42 | chatTask.reset(); 43 | pos = null; 44 | } 45 | 46 | @Override 47 | public void onDeactivate() { 48 | mc.player.sendChatMessage("#stop"); 49 | } 50 | 51 | @EventHandler 52 | public void onTick(TickEvent.Pre event) { 53 | axe = InvUtils.find(itemStack -> itemStack.getItem() == Items.NETHERITE_AXE || itemStack.getItem() == Items.DIAMOND_AXE); 54 | 55 | switch (stage) { 56 | case Find -> { 57 | pos = findChests(); 58 | 59 | if (pos == null) { 60 | chatTask.reset(); 61 | stage = Stage.Stuck; 62 | //info("There's no chests in your view distance."); 63 | //toggle(); 64 | return; 65 | } 66 | 67 | x = pos.getX(); 68 | y = pos.getY(); 69 | z = pos.getZ(); 70 | 71 | chatTask.reset(); 72 | stage = Stage.Move; 73 | } 74 | case Move -> { 75 | chatTask.run(() -> mc.player.sendChatMessage("#goto " + x + " " + y + " " + z)); 76 | 77 | if (getBlockPos(mc.player).equals(pos)) stage = Stage.Reset; 78 | } 79 | case Reset -> { 80 | chatTask.reset(); 81 | 82 | stage = Stage.Find; 83 | } 84 | case Stuck -> { 85 | if (findChests() != null) stage = Stage.Find; 86 | else chatTask.run(() -> mc.player.sendChatMessage("#goto " + getDirection().getX() + " " + y + " " + getDirection().getZ())); 87 | } 88 | } 89 | } 90 | 91 | private BlockPos getDirection() { 92 | int x = X(mc.player.getBlockPos()); 93 | int y = Y(mc.player.getBlockPos()); 94 | int z = Z(mc.player.getBlockPos()); 95 | 96 | if (x > 0) x = 30000000; 97 | else x = -30000000; 98 | 99 | if (y > 0) y = 30000000; 100 | else y = -30000000; 101 | 102 | return new BlockPos(x,y,z); 103 | } 104 | 105 | private BlockPos findChests() { 106 | ArrayList pos = new ArrayList<>(); 107 | 108 | for (BlockEntity entity : Utils.blockEntities()) { 109 | if (entity instanceof ChestBlockEntity chestBlock) { 110 | if (!pos.contains(chestBlock.getPos())) pos.add(chestBlock.getPos()); 111 | } 112 | } 113 | 114 | if (pos.isEmpty()) return null; 115 | 116 | pos.sort(Comparator.comparingDouble(PlayerUtils::distanceTo)); 117 | return pos.get(0); 118 | } 119 | 120 | public enum Stage { 121 | Find, 122 | Move, 123 | Reset, 124 | Stuck 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/misc/NoDesync.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.misc; 2 | 3 | 4 | import com.example.addon.Addon; 5 | import meteordevelopment.meteorclient.events.entity.player.BreakBlockEvent; 6 | import meteordevelopment.meteorclient.events.entity.player.InteractBlockEvent; 7 | import meteordevelopment.meteorclient.settings.BoolSetting; 8 | import meteordevelopment.meteorclient.settings.Setting; 9 | import meteordevelopment.meteorclient.settings.SettingGroup; 10 | import meteordevelopment.meteorclient.systems.modules.Module; 11 | import meteordevelopment.orbit.EventHandler; 12 | import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket; 13 | import net.minecraft.util.math.BlockPos; 14 | import net.minecraft.util.math.Direction; 15 | 16 | public class NoDesync extends Module { 17 | 18 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 19 | 20 | private final Setting breakBlock = sgGeneral.add(new BoolSetting.Builder().name("break").description("Anti-desync for block breaking.").defaultValue(true).build()); 21 | private final Setting placeBlock = sgGeneral.add(new BoolSetting.Builder().name("place").description("Anti-desync for block placing.").defaultValue(true).build()); 22 | 23 | public NoDesync() { 24 | super(Addon.misc, "no-desync", "Prevent ghost block placements."); 25 | } 26 | 27 | 28 | @EventHandler 29 | private void onBlockPlace(InteractBlockEvent event) { 30 | if (!placeBlock.get()) return; 31 | BlockPos placePos = event.result.getBlockPos(); 32 | if (placePos != null) mc.player.networkHandler.sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, placePos, Direction.UP)); 33 | } 34 | 35 | @EventHandler 36 | private void onBlockBreak(BreakBlockEvent event) { 37 | if (!breakBlock.get()) return; 38 | BlockPos breakPos = event.blockPos; 39 | if (breakPos != null) mc.player.networkHandler.sendPacket(new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, breakPos, Direction.UP)); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/misc/SilentItem.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.misc; 2 | 3 | import com.example.addon.Addon; 4 | import com.example.addon.Utils.ArmorUtils; 5 | import meteordevelopment.meteorclient.events.world.TickEvent; 6 | import meteordevelopment.meteorclient.settings.BoolSetting; 7 | import meteordevelopment.meteorclient.settings.EnumSetting; 8 | import meteordevelopment.meteorclient.settings.Setting; 9 | import meteordevelopment.meteorclient.settings.SettingGroup; 10 | import meteordevelopment.meteorclient.systems.modules.Module; 11 | import meteordevelopment.meteorclient.utils.player.FindItemResult; 12 | import meteordevelopment.meteorclient.utils.player.InvUtils; 13 | import meteordevelopment.orbit.EventHandler; 14 | import net.minecraft.item.Items; 15 | import net.minecraft.util.Hand; 16 | 17 | //SilentItem by ranele (copper hack addon) https://discord.gg/tqRPu6Pudg 18 | 19 | public class SilentItem extends Module { 20 | public SilentItem() { 21 | super(Addon.misc, "silent-item", " "); 22 | } 23 | 24 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 25 | private final Setting itemUse = sgGeneral.add(new EnumSetting.Builder().name("item").defaultValue(Item.Rocket).build()); 26 | private final Setting notify = sgGeneral.add(new BoolSetting.Builder().name("notify").defaultValue(true).build()); 27 | 28 | private int mainSlot; 29 | private boolean invMove; 30 | 31 | @Override 32 | public void onActivate(){ 33 | invMove = false; 34 | mainSlot = mc.player.getInventory().selectedSlot; 35 | } 36 | 37 | @Override 38 | public void onDeactivate(){ 39 | invMove = false; 40 | mainSlot = -1; 41 | } 42 | 43 | @EventHandler 44 | private void onTickEvent(TickEvent.Pre event) { 45 | FindItemResult fP = InvUtils.find(Items.ENDER_PEARL); 46 | if (!fP.found() && itemUse.get() == Item.Pearl) toggle(); 47 | FindItemResult fR = InvUtils.find(Items.FIREWORK_ROCKET); 48 | if (!fR.found() && itemUse.get() == Item.Rocket) toggle(); 49 | if (itemUse.get() == Item.Pearl) { 50 | FindItemResult pearl = InvUtils.find(Items.ENDER_PEARL); 51 | int pearlSlot = pearl.slot(); 52 | if (!pearl.found() && notify.get()) { 53 | info("No pearl found!"); 54 | return; 55 | } 56 | InvUtils.move().from(pearlSlot).to(mainSlot); 57 | if (mc.player.getMainHandStack().getItem() == Items.ENDER_PEARL) { 58 | mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND); 59 | invMove = true; 60 | } 61 | if (invMove) { 62 | InvUtils.move().from(mainSlot).to(pearlSlot); 63 | } 64 | toggle(); 65 | } 66 | if (itemUse.get() == Item.Rocket) { 67 | if (!ArmorUtils.isFallFlying()) toggle(); 68 | FindItemResult rocket = InvUtils.find(Items.FIREWORK_ROCKET); 69 | int rocketSlot = rocket.slot(); 70 | if (!rocket.found() && notify.get()) { 71 | info("No rocket found!"); 72 | toggle(); 73 | return; 74 | } 75 | if (!rocket.found()) toggle(); 76 | InvUtils.move().from(rocketSlot).to(mainSlot); 77 | if (mc.player.getMainHandStack().getItem() == Items.FIREWORK_ROCKET) { 78 | mc.interactionManager.interactItem(mc.player, Hand.MAIN_HAND); 79 | invMove = true; 80 | } 81 | if (invMove) { 82 | InvUtils.move().from(mainSlot).to(rocketSlot); 83 | } 84 | toggle(); 85 | } 86 | 87 | } 88 | public enum Item { 89 | Pearl, 90 | Rocket; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/misc/SpamInChat.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.misc; 2 | 3 | 4 | import com.example.addon.Addon; 5 | import com.google.common.collect.Lists; 6 | import meteordevelopment.meteorclient.events.world.TickEvent; 7 | import meteordevelopment.meteorclient.settings.EnumSetting; 8 | import meteordevelopment.meteorclient.settings.IntSetting; 9 | import meteordevelopment.meteorclient.settings.Setting; 10 | import meteordevelopment.meteorclient.settings.SettingGroup; 11 | import meteordevelopment.meteorclient.systems.modules.Module; 12 | import meteordevelopment.orbit.EventHandler; 13 | import net.fabricmc.api.EnvType; 14 | import net.fabricmc.api.Environment; 15 | 16 | import java.util.List; 17 | 18 | @Environment(EnvType.CLIENT) 19 | public class SpamInChat extends Module { 20 | public enum Text { 21 | new_Rap_by_Minerica 22 | } 23 | 24 | private final SettingGroup sgGeneral = this.settings.getDefaultGroup(); 25 | 26 | private final Setting> text = sgGeneral.add(new EnumSetting.Builder>() 27 | .name("text") 28 | .defaultValue(Text.new_Rap_by_Minerica) 29 | .onChanged(e -> messageI = 0) 30 | .build() 31 | ); 32 | 33 | private final Setting delay = sgGeneral.add(new IntSetting.Builder() 34 | .name("delay") 35 | .description("The delay between specified messages in ticks.") 36 | .defaultValue(20) 37 | .min(0) 38 | .sliderMax(200) 39 | .build() 40 | ); 41 | 42 | private int messageI, timer; 43 | 44 | public SpamInChat() { 45 | super(Addon.misc, "SpamInChat", "Better than spam."); 46 | } 47 | 48 | @Override 49 | public void onActivate() { 50 | timer = delay.get(); 51 | messageI = 0; 52 | } 53 | 54 | @EventHandler 55 | private void onTick(TickEvent.Post event) { 56 | if (timer <= 0) { 57 | String line = ""; 58 | if (text.get().equals(Text.new_Rap_by_Minerica)) line = new_Rap_by_Minerica.get(messageI); 59 | mc.player.sendChatMessage (line,null); 60 | timer = delay.get(); 61 | if ((text.get().equals(Text.new_Rap_by_Minerica) && messageI++ == new_Rap_by_Minerica.size() - 1)) { 62 | messageI = 0; 63 | } 64 | } else { 65 | timer--; 66 | } 67 | } 68 | /* Я ПОМНЮ ПЕНИС БОЛЬШОЙ */ 69 | private static final List new_Rap_by_Minerica = Lists.newArrayList( 70 | "ей ей ей йоу реп новый", 71 | "насрал в гуся", 72 | "насрал в рот пеликану", 73 | "йоу йоу Я ебал птиц на птицеферме", 74 | "это очень хорошо", 75 | "йоу йоу ееее." 76 | 77 | ); 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/misc/Spinner.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.misc; 2 | 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.events.world.TickEvent; 5 | import meteordevelopment.meteorclient.settings.BoolSetting; 6 | import meteordevelopment.meteorclient.settings.IntSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.meteorclient.utils.player.Rotations; 11 | import meteordevelopment.orbit.EventHandler; 12 | import net.minecraft.item.Items; 13 | 14 | public class Spinner extends Module { 15 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 16 | private final Setting b = sgGeneral.add(new IntSetting.Builder().name("speed").description("The speed at which you rotate.").defaultValue(5).min(0).sliderMax(100).build()); 17 | private final Setting c = sgGeneral.add(new BoolSetting.Builder().name("pauseItems").description("Stop rotate when you use some pvp items.").defaultValue(true).build()); 18 | 19 | private short a = 0; 20 | 21 | public Spinner() { 22 | super(Addon.misc, "spinner", "very very very very very fast spin / max speed 180"); 23 | } 24 | 25 | @EventHandler 26 | public void onTick(TickEvent.Post post) { 27 | if (!c.get() || mc.player.getMainHandStack().getItem() != Items.EXPERIENCE_BOTTLE && mc.player.getMainHandStack().getItem() != Items.ENDER_PEARL && mc.player.getOffHandStack().getItem() != Items.EXPERIENCE_BOTTLE && mc.player.getOffHandStack().getItem() != Items.ENDER_PEARL && mc.player.getMainHandStack().getItem() != Items.OBSIDIAN && mc.player.getMainHandStack().getItem() != Items.NETHERITE_SWORD && mc.player.getMainHandStack().getItem() != Items.NETHERITE_PICKAXE && mc.player.getMainHandStack().getItem() != Items.END_CRYSTAL && mc.player.getMainHandStack().getItem() != Items.STONE_BUTTON && mc.player.getMainHandStack().getItem() != Items.ANVIL && mc.player.getMainHandStack().getItem() != Items.CHIPPED_ANVIL && mc.player.getMainHandStack().getItem() != Items.DAMAGED_ANVIL && mc.player.getMainHandStack().getItem() != Items.BOW && mc.player.getMainHandStack().getItem() != Items.TNT && mc.player.getMainHandStack().getItem() != Items.FLINT) { 28 | a = (short) (a + b.get()); 29 | if (a > 180) { 30 | a = -180; 31 | } 32 | 33 | Rotations.rotate(a, 0.0D); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/misc/Twerk.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.misc; 2 | 3 | import com.example.addon.Utils.TimerUtilsbanana; 4 | import com.example.addon.Addon; 5 | import meteordevelopment.meteorclient.events.world.TickEvent; 6 | import meteordevelopment.meteorclient.settings.DoubleSetting; 7 | import meteordevelopment.meteorclient.settings.Setting; 8 | import meteordevelopment.meteorclient.settings.SettingGroup; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | import meteordevelopment.orbit.EventHandler; 11 | 12 | //Я помню. Я помню пенис большой// 13 | // Я помню пенис большой // 14 | // Я помню пенис большой // 15 | // Я помню у-о-о. Я знаю пенис большой // 16 | // Я знаю пенис большой // 17 | // Я помню пенис большой // 18 | // Я помню пенис большо-у-о-у-о-у-о// 19 | 20 | public class Twerk extends Module { 21 | private final SettingGroup sgGeneral = settings.getDefaultGroup(); 22 | 23 | 24 | // General 25 | private final Setting twerkDelay = (Setting) sgGeneral.add(new DoubleSetting.Builder() 26 | .name("Twerk Delay") 27 | .description("In Millis.") 28 | .defaultValue(4) 29 | .min(1) 30 | .sliderRange(2,100) 31 | .build() 32 | ); 33 | 34 | 35 | public Twerk() { 36 | super(Addon.misc, "twerk", "Twerk like the true queen Miley Cyrus."); 37 | } 38 | 39 | 40 | private boolean upp = false; 41 | private final com.example.addon.Utils.TimerUtilsbanana onTwerk = new TimerUtilsbanana(); 42 | 43 | 44 | @EventHandler 45 | private void onTick(TickEvent.Pre event) { 46 | mc.options.sneakKey.setPressed(upp); 47 | 48 | if (onTwerk.passedMillis(twerkDelay.get().longValue()) && !upp) { 49 | onTwerk.reset(); 50 | upp = true; 51 | } 52 | 53 | if (onTwerk.passedMillis(twerkDelay.get().longValue()) && upp) { 54 | onTwerk.reset(); 55 | upp = false; 56 | } 57 | 58 | } 59 | 60 | @Override 61 | public void onDeactivate() { 62 | upp = false; 63 | mc.options.sneakKey.setPressed(false); 64 | onTwerk.reset(); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/com/example/addon/modules/misc/bebra_info_and_help.java: -------------------------------------------------------------------------------- 1 | package com.example.addon.modules.misc; 2 | 3 | import com.example.addon.Addon; 4 | import meteordevelopment.meteorclient.systems.modules.Module; 5 | import meteordevelopment.meteorclient.utils.player.ChatUtils; 6 | import net.minecraft.text.Text; 7 | 8 | public class bebra_info_and_help extends Module { 9 | public bebra_info_and_help() { 10 | super(Addon.misc, "BEBRA", "Authors: Fucking slaves#7603 , MrFiNka#8113"); 11 | } 12 | @Override 13 | public void onActivate (){ 14 | ChatUtils.sendMsg(Text.of("Authors: Fucking slaves#7603 , MrFiNka#8113 , Cahekska#9358")); 15 | ChatUtils.sendMsg(Text.of("BebraHack is a free addon for the meteor client for version 1.19.2")); 16 | ChatUtils.sendMsg(Text.of("Eu: if you have a question about the addon, then go to the discord server of the addon and call me in private messages. My nickname FuckingSlaves#7603 https://discord.gg/8zpzhvq3U7 / Ru: по вопросам пишите мне в дс, ник - FuckingSlaves#7603, найти можно в дс бебрахака (ссылка выше)")); 17 | try { 18 | String url = "https://github.com/BebraHack/BebraHackAddon"; 19 | java.awt.Desktop.getDesktop().browse(java.net.URI.create(url)); 20 | } catch (java.io.IOException e) { 21 | System.out.println(e.getMessage()); 22 | } 23 | toggle(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/resources/addon-template.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "package": "bebra.hack.addon.mixin", 4 | "compatibilityLevel": "JAVA_17", 5 | "client": [], 6 | "injectors": { 7 | "defaultRequire": 1 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/resources/addon.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "package": "com.example.addon.mixin", 4 | "compatibilityLevel": "JAVA_17", 5 | "client": [], 6 | "injectors": { 7 | "defaultRequire": 1 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/resources/assets/logo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BebraHack/BebraHackAddon/7916b607fe76e3c412d9db9a6cb4477bdacd0874/src/main/resources/assets/logo1.png -------------------------------------------------------------------------------- /src/main/resources/assets/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BebraHack/BebraHackAddon/7916b607fe76e3c412d9db9a6cb4477bdacd0874/src/main/resources/assets/logo2.png -------------------------------------------------------------------------------- /src/main/resources/assets/logo3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BebraHack/BebraHackAddon/7916b607fe76e3c412d9db9a6cb4477bdacd0874/src/main/resources/assets/logo3.png -------------------------------------------------------------------------------- /src/main/resources/assets/template/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BebraHack/BebraHackAddon/7916b607fe76e3c412d9db9a6cb4477bdacd0874/src/main/resources/assets/template/icon.png -------------------------------------------------------------------------------- /src/main/resources/fabric.mod.json: -------------------------------------------------------------------------------- 1 | { 2 | "schemaVersion": 1, 3 | "id": "addon-bebra", 4 | "version": "${version}", 5 | "name": "BebrahackV6", 6 | "description": "The best meteor addon - BebraHackV6.", 7 | "authors": [ 8 | "jabronyyy, MrFiNka / assistants: Megakrutish, Vaxei" 9 | ], 10 | "contact": { 11 | "repo": "https://github.com/BebraHack/BebraHackAddon" 12 | }, 13 | "icon": "assets/template/icon.png", 14 | "environment": "client", 15 | "entrypoints": { 16 | "meteor": [ 17 | "bebra.hack.addon.Addon" 18 | ] 19 | }, 20 | "mixins": [ 21 | "addon-template.mixins.json" 22 | ], 23 | "custom": { 24 | "meteor-client:color": "204,0,102" 25 | }, 26 | "depends": { 27 | "java": ">=17", 28 | "minecraft": ">=${mc_version}", 29 | "meteor-client": "*" 30 | } 31 | } 32 | --------------------------------------------------------------------------------