├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── config.yml │ └── suggestion.yml ├── builds │ ├── package-lock.json │ ├── package.json │ ├── get_number.js │ └── mc_version.js ├── moderation │ └── package.json ├── pull_request_template.md └── workflows │ ├── pull-request.yml │ └── issue-moderator.yml ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── src └── main │ ├── resources │ ├── assets │ │ └── meteor-client │ │ │ ├── icon.png │ │ │ ├── lang │ │ │ ├── zh_cn.json │ │ │ ├── hi_in.json │ │ │ ├── vi_vn.json │ │ │ ├── pt_br.json │ │ │ ├── en_gb.json │ │ │ └── en_us.json │ │ │ ├── textures │ │ │ ├── blank.png │ │ │ ├── chams.jpg │ │ │ ├── steve.png │ │ │ ├── meteor.png │ │ │ ├── container.png │ │ │ ├── icons │ │ │ │ ├── gui │ │ │ │ │ ├── copy.png │ │ │ │ │ ├── edit.png │ │ │ │ │ ├── paste.png │ │ │ │ │ ├── reset.png │ │ │ │ │ ├── circle.png │ │ │ │ │ ├── triangle.png │ │ │ │ │ ├── favorite_no.png │ │ │ │ │ └── favorite_yes.png │ │ │ │ ├── chat │ │ │ │ │ ├── meteor.png │ │ │ │ │ └── baritone.png │ │ │ │ └── waypoints │ │ │ │ │ ├── star.png │ │ │ │ │ ├── circle.png │ │ │ │ │ ├── skull.png │ │ │ │ │ ├── square.png │ │ │ │ │ ├── diamond.png │ │ │ │ │ └── triangle.png │ │ │ └── container-transparent.png │ │ │ ├── fonts │ │ │ ├── Comfortaa.ttf │ │ │ ├── Pixelation.ttf │ │ │ ├── Tw Cen MT.ttf │ │ │ └── JetBrains Mono.ttf │ │ │ └── shaders │ │ │ ├── pos_color.frag │ │ │ ├── passthrough.frag │ │ │ ├── blur.vert │ │ │ ├── passthrough.vert │ │ │ ├── pos_tex_color.frag │ │ │ ├── text.frag │ │ │ ├── pos_color.vert │ │ │ ├── post-process │ │ │ ├── base.vert │ │ │ └── image.frag │ │ │ ├── text.vert │ │ │ ├── pos_tex_color.vert │ │ │ ├── blur_down.frag │ │ │ └── blur_up.frag │ ├── meteor-client-indigo.mixins.json │ ├── meteor-client-baritone.mixins.json │ ├── meteor-client-viafabricplus.mixins.json │ ├── meteor-client-lithium.mixins.json │ └── meteor-client-sodium.mixins.json │ └── java │ └── meteordevelopment │ └── meteorclient │ ├── gui │ ├── widgets │ │ ├── WRoot.java │ │ ├── WVerticalSeparator.java │ │ ├── pressable │ │ │ ├── WTriangle.java │ │ │ ├── WMinus.java │ │ │ ├── WPlus.java │ │ │ ├── WCheckbox.java │ │ │ └── WConfirmedMinus.java │ │ ├── WQuad.java │ │ └── WHorizontalSeparator.java │ ├── utils │ │ ├── AlignmentX.java │ │ ├── AlignmentY.java │ │ ├── BaseWidget.java │ │ └── CharFilter.java │ ├── GuiKeyEvents.java │ ├── renderer │ │ ├── packer │ │ │ └── TextureRegion.java │ │ ├── GuiRenderOperation.java │ │ └── operations │ │ │ └── TextOperation.java │ ├── themes │ │ └── meteor │ │ │ └── widgets │ │ │ ├── WMeteorQuad.java │ │ │ ├── pressable │ │ │ ├── WMeteorFavorite.java │ │ │ ├── WMeteorTriangle.java │ │ │ └── WMeteorMinus.java │ │ │ ├── WMeteorTooltip.java │ │ │ ├── WMeteorTopBar.java │ │ │ ├── WMeteorView.java │ │ │ ├── WMeteorLabel.java │ │ │ └── WMeteorAccount.java │ └── tabs │ │ ├── TabScreen.java │ │ ├── Tab.java │ │ ├── builtin │ │ └── ModulesTab.java │ │ └── WindowTabScreen.java │ ├── systems │ ├── hud │ │ ├── HudGroup.java │ │ ├── XAnchor.java │ │ ├── YAnchor.java │ │ └── Alignment.java │ ├── accounts │ │ ├── TokenAccount.java │ │ ├── AccountType.java │ │ ├── TexturesJson.java │ │ └── UuidToProfileResponse.java │ ├── modules │ │ ├── movement │ │ │ ├── speed │ │ │ │ └── SpeedModes.java │ │ │ └── elytrafly │ │ │ │ ├── ElytraFlightModes.java │ │ │ │ └── modes │ │ │ │ └── Vanilla.java │ │ ├── player │ │ │ ├── Portals.java │ │ │ └── LiquidInteract.java │ │ └── misc │ │ │ └── BetterBeacons.java │ ├── waypoints │ │ └── events │ │ │ ├── WaypointAddedEvent.java │ │ │ └── WaypointRemovedEvent.java │ └── proxies │ │ └── ProxyType.java │ ├── utils │ ├── misc │ │ ├── IGetter.java │ │ ├── NbtException.java │ │ ├── IChangeable.java │ │ ├── ICopyable.java │ │ ├── ISerializable.java │ │ ├── text │ │ │ ├── ColoredText.java │ │ │ └── RunnableClickEvent.java │ │ ├── EmptyIterator.java │ │ ├── input │ │ │ └── KeyAction.java │ │ ├── MissHitResult.java │ │ └── CursorStyle.java │ ├── player │ │ └── Safety.java │ ├── render │ │ ├── AlignmentX.java │ │ ├── AlignmentY.java │ │ ├── IVertexConsumerProvider.java │ │ ├── NoopOutlineVertexConsumerProvider.java │ │ └── NoopImmediateVertexConsumerProvider.java │ ├── entity │ │ └── Target.java │ ├── tooltip │ │ ├── MeteorTooltipData.java │ │ └── TextTooltipComponent.java │ ├── world │ │ ├── Dimension.java │ │ └── CardinalDirection.java │ ├── PostInit.java │ ├── PreInit.java │ ├── notebot │ │ ├── instrumentdetect │ │ │ ├── InstrumentDetectFunction.java │ │ │ └── InstrumentDetectMode.java │ │ └── decoder │ │ │ └── SongDecoder.java │ ├── network │ │ └── OnlinePlayers.java │ └── other │ │ └── JsonDateDeserializer.java │ ├── settings │ ├── IVisible.java │ ├── IGeneric.java │ ├── IBlockData.java │ └── PotionSetting.java │ ├── mixininterface │ ├── IText.java │ ├── ICamera.java │ ├── ISimpleOption.java │ ├── ISlot.java │ ├── IClientPlayerInteractionManager.java │ ├── IChatHud.java │ ├── ICapabilityTracker.java │ ├── IPlayerMoveC2SPacket.java │ ├── IRenderPipeline.java │ ├── IChatHudLineVisible.java │ ├── IAbstractFurnaceScreenHandler.java │ ├── IMinecraftClient.java │ ├── IExplosionS2CPacket.java │ ├── IWorldRenderer.java │ ├── IChatHudLine.java │ ├── IPlayerInteractEntityC2SPacket.java │ ├── IRaycastContext.java │ ├── IBox.java │ ├── IMessageHandler.java │ ├── IVec3d.java │ └── IGpuDevice.java │ ├── renderer │ ├── text │ │ ├── FontFace.java │ │ ├── BuiltinFontFace.java │ │ └── SystemFontFace.java │ ├── ShapeMode.java │ └── MeteorVertexFormatElements.java │ ├── events │ ├── game │ │ ├── GameLeftEvent.java │ │ ├── GameJoinedEvent.java │ │ ├── ResolutionChangedEvent.java │ │ ├── ResourcePacksReloadedEvent.java │ │ ├── SendMessageEvent.java │ │ ├── OpenScreenEvent.java │ │ └── ChangePerspectiveEvent.java │ ├── render │ │ ├── RenderAfterWorldEvent.java │ │ ├── GetFovEvent.java │ │ ├── ArmRenderEvent.java │ │ ├── TooltipDataEvent.java │ │ ├── HeldItemRendererEvent.java │ │ ├── RenderBlockEntityEvent.java │ │ ├── ApplyTransformationEvent.java │ │ └── Render2DEvent.java │ ├── meteor │ │ ├── ActiveModulesChangedEvent.java │ │ ├── CustomFontChangedEvent.java │ │ ├── CharTypedEvent.java │ │ ├── ModuleBindChangedEvent.java │ │ ├── MouseScrollEvent.java │ │ └── KeyEvent.java │ ├── world │ │ ├── AmbientOcclusionEvent.java │ │ ├── ChunkDataEvent.java │ │ ├── ChunkOcclusionEvent.java │ │ ├── BlockActivateEvent.java │ │ ├── ServerConnectEndEvent.java │ │ ├── TickEvent.java │ │ ├── PlaySoundEvent.java │ │ ├── ParticleEvent.java │ │ ├── ServerConnectBeginEvent.java │ │ └── BlockUpdateEvent.java │ ├── entity │ │ ├── EntityAddedEvent.java │ │ ├── EntityDestroyEvent.java │ │ ├── EntityRemovedEvent.java │ │ ├── player │ │ │ ├── PlayerTickMovementEvent.java │ │ │ ├── JumpVelocityMultiplierEvent.java │ │ │ ├── BlockBreakingCooldownEvent.java │ │ │ ├── FinishUsingItemEvent.java │ │ │ ├── StoppedUsingItemEvent.java │ │ │ ├── ItemUseCrosshairTargetEvent.java │ │ │ ├── PickItemsEvent.java │ │ │ ├── SendMovementPacketsEvent.java │ │ │ ├── InteractItemEvent.java │ │ │ ├── AttackEntityEvent.java │ │ │ ├── BreakBlockEvent.java │ │ │ ├── PlayerMoveEvent.java │ │ │ ├── InteractEntityEvent.java │ │ │ ├── DoItemUseEvent.java │ │ │ ├── PlaceBlockEvent.java │ │ │ ├── InteractBlockEvent.java │ │ │ ├── ClipAtLedgeEvent.java │ │ │ └── StartBreakingBlockEvent.java │ │ ├── BoatMoveEvent.java │ │ ├── EntityMoveEvent.java │ │ └── DropItemsEvent.java │ ├── Cancellable.java │ └── packets │ │ ├── InventoryEvent.java │ │ ├── PlaySoundPacketEvent.java │ │ └── ContainerSlotUpdateEvent.java │ ├── mixin │ ├── TextMixin.java │ ├── EntityAccessor.java │ ├── AbstractBlockAccessor.java │ ├── TextHandlerAccessor.java │ ├── ReloadStateAccessor.java │ ├── FishingBobberEntityAccessor.java │ ├── ClientChunkManagerAccessor.java │ ├── StatusEffectInstanceAccessor.java │ ├── ClientConnectionAccessor.java │ ├── PlayerSkinProviderAccessor.java │ ├── ProjectileInGroundAccessor.java │ ├── DirectionAccessor.java │ ├── FileCacheAccessor.java │ ├── RenderLayerAccessor.java │ ├── EntityBucketItemAccessor.java │ ├── HandledScreenAccessor.java │ ├── MountScreenHandlerAccessor.java │ ├── ResourceReloadLoggerAccessor.java │ ├── PlayerEntityAccessor.java │ ├── ClientPlayerEntityAccessor.java │ ├── MinecraftServerAccessor.java │ ├── ProjectionMatrix2Accessor.java │ ├── WorldAccessor.java │ ├── ShulkerBoxScreenHandlerAccessor.java │ ├── AbstractSignEditScreenAccessor.java │ ├── CrossbowItemAccessor.java │ ├── LayerRenderStateAccessor.java │ ├── EntityTrackingSectionAccessor.java │ ├── ItemRenderStateAccessor.java │ ├── BlockEntityRenderManagerAccessor.java │ ├── BlockHitResultAccessor.java │ ├── ChunkAccessor.java │ ├── ContainerComponentAccessor.java │ ├── AbstractClientPlayerEntityAccessor.java │ ├── CreativeInventoryScreenAccessor.java │ ├── DrawContextAccessor.java │ ├── ItemGroupsAccessor.java │ ├── ClientChunkMapAccessor.java │ ├── SimpleEntityLookupAccessor.java │ ├── WorldRendererAccessor.java │ ├── ChatHudAccessor.java │ ├── MapTextureManagerAccessor.java │ ├── EntityVelocityUpdateS2CPacketAccessor.java │ ├── PlayerMoveC2SPacketAccessor.java │ ├── MutableTextMixin.java │ ├── PlayerMoveC2SPacketMixin.java │ ├── SlotMixin.java │ ├── RenderPipelineMixin.java │ ├── ClientPlayerInteractionManagerAccessor.java │ ├── CreativeSlotMixin.java │ ├── MobEntityMixin.java │ ├── ItemGroupsMixin.java │ ├── AbstractFurnaceScreenHandlerMixin.java │ ├── CapabilityTrackerMixin.java │ ├── LivingEntityAccessor.java │ ├── HungerManagerMixin.java │ ├── YggdrasilMinecraftSessionServiceAccessor.java │ ├── SectionedEntityCacheAccessor.java │ ├── ShaderLoaderMixin.java │ ├── RegistriesMixin.java │ ├── KeyBindingAccessor.java │ ├── ServerResourcePackLoaderMixin.java │ └── AbstractSignBlockEntityRendererMixin.java │ ├── pathing │ └── BaritoneUtils.java │ ├── ModMenuIntegration.java │ └── commands │ ├── arguments │ └── DirectionArgumentType.java │ └── commands │ └── GamemodeCommand.java ├── gradle.properties ├── .editorconfig ├── .idea ├── copyright │ ├── profiles_settings.xml │ └── Meteor.xml └── scopes │ └── Meteor_Copyright_Notice.xml ├── .gitignore ├── launch └── build.gradle.kts └── settings.gradle.kts /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: ['https://meteorclient.com/donate'] 2 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/icon.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/lang/zh_cn.json: -------------------------------------------------------------------------------- 1 | { 2 | "key.meteor-client.open-gui": "打开GUI", 3 | "key.meteor-client.open-commands": "输入命令" 4 | } 5 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/lang/hi_in.json: -------------------------------------------------------------------------------- 1 | { 2 | "key.meteor-client.open-gui": "GUI खोलें", 3 | "key.meteor-client.open-commands": "कमांड खोलें" 4 | } 5 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/lang/vi_vn.json: -------------------------------------------------------------------------------- 1 | { 2 | "key.meteor-client.open-gui": "Mở giao diện", 3 | "key.meteor-client.open-commands": "Mở lệnh" 4 | } 5 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/lang/pt_br.json: -------------------------------------------------------------------------------- 1 | { 2 | "key.meteor-client.open-gui": "Abrir Menu", 3 | "key.meteor-client.open-commands": "Abrir Comandos" 4 | } 5 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/blank.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/chams.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/chams.jpg -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/steve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/steve.png -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx2G 2 | org.gradle.configuration-cache=false 3 | 4 | # Mod Properties 5 | maven_group=meteordevelopment 6 | archives_base_name=meteor-client 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/fonts/Comfortaa.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/fonts/Comfortaa.ttf -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/fonts/Pixelation.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/fonts/Pixelation.ttf -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/fonts/Tw Cen MT.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/fonts/Tw Cen MT.ttf -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/meteor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/meteor.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/container.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/fonts/JetBrains Mono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/fonts/JetBrains Mono.ttf -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/pos_color.frag: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | out vec4 color; 4 | 5 | in vec4 v_Color; 6 | 7 | void main() { 8 | color = v_Color; 9 | } 10 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/gui/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/gui/copy.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/gui/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/gui/edit.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/gui/paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/gui/paste.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/gui/reset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/gui/reset.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/chat/meteor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/chat/meteor.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/gui/circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/gui/circle.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/chat/baritone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/chat/baritone.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/gui/triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/gui/triangle.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/waypoints/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/waypoints/star.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/container-transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/container-transparent.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/gui/favorite_no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/gui/favorite_no.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/gui/favorite_yes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/gui/favorite_yes.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/waypoints/circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/waypoints/circle.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/waypoints/skull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/waypoints/skull.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/waypoints/square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/waypoints/square.png -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Discord 4 | url: https://meteorclient.com/discord 5 | about: Join our discord for faster support on smaller issues. 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/waypoints/diamond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/waypoints/diamond.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/textures/icons/waypoints/triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MeteorDevelopment/meteor-client/HEAD/src/main/resources/assets/meteor-client/textures/icons/waypoints/triangle.png -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/lang/en_gb.json: -------------------------------------------------------------------------------- 1 | { 2 | "key.meteor-client.open-gui": "Open GUI", 3 | "key.meteor-client.open-commands": "Open Commands", 4 | "key.category.meteor-client.meteor-client": "Meteor Client" 5 | } 6 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/lang/en_us.json: -------------------------------------------------------------------------------- 1 | { 2 | "key.meteor-client.open-gui": "Open GUI", 3 | "key.meteor-client.open-commands": "Open Commands", 4 | "key.category.meteor-client.meteor-client": "Meteor Client" 5 | } 6 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/passthrough.frag: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | precision lowp float; 4 | 5 | in vec2 uv; 6 | out vec4 color; 7 | 8 | uniform sampler2D u_Texture; 9 | 10 | void main() { 11 | color = texture(u_Texture, uv); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/blur.vert: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | precision lowp float; 4 | 5 | layout (location = 0) in vec2 pos; 6 | out vec2 uv; 7 | 8 | void main() { 9 | gl_Position = vec4(pos, 0, 1); 10 | uv = pos * .5 + .5; 11 | } 12 | -------------------------------------------------------------------------------- /.idea/scopes/Meteor_Copyright_Notice.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/passthrough.vert: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | precision lowp float; 4 | 5 | layout (location = 0) in vec2 pos; 6 | out vec2 uv; 7 | 8 | void main() { 9 | gl_Position = vec4(pos, 0, 1); 10 | uv = pos * .5 + .5; 11 | } 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.DS_Store 2 | .gradle 3 | .settings 4 | .project 5 | .classpath 6 | build 7 | out 8 | run 9 | bin 10 | logs 11 | .github/builds/node_modules 12 | .github/moderation/node_modules 13 | *.iws 14 | *.ipr 15 | *.iml 16 | .idea/* 17 | !.idea/copyright/* 18 | !.idea/scopes/* 19 | -------------------------------------------------------------------------------- /.github/builds/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "devbuilds", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "devbuilds", 9 | "version": "1.0.0", 10 | "license": "MIT" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/pos_tex_color.frag: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | out vec4 color; 4 | 5 | uniform sampler2D u_Texture; 6 | 7 | in vec2 v_TexCoord; 8 | in vec4 v_Color; 9 | 10 | void main() { 11 | color = texture(u_Texture, v_TexCoord) * v_Color; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/text.frag: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | out vec4 color; 4 | 5 | uniform sampler2D u_Texture; 6 | 7 | in vec2 v_TexCoord; 8 | in vec4 v_Color; 9 | 10 | void main() { 11 | color = vec4(1.0, 1.0, 1.0, texture(u_Texture, v_TexCoord).r) * v_Color; 12 | } 13 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /launch/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("java") 3 | } 4 | 5 | group = "meteordevelopment" 6 | version = "0.1.0" 7 | 8 | tasks { 9 | withType { 10 | options.release = 8 11 | options.compilerArgs.add("-Xlint:-options") // Suppress Java 8 deprecation warnings 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /.github/builds/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "devbuilds", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "author": "MineGame159", 7 | "license": "MIT", 8 | "type": "module", 9 | "scripts": { 10 | "get_number": "node get_number.js", 11 | "webhook": "node index.js" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/resources/meteor-client-indigo.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": false, 3 | "package": "meteordevelopment.meteorclient.mixin.indigo", 4 | "compatibilityLevel": "JAVA_21", 5 | "plugin": "meteordevelopment.meteorclient.MixinPlugin", 6 | "client": [], 7 | "injectors": { 8 | "defaultRequire": 1 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/widgets/WRoot.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.widgets; 7 | 8 | public interface WRoot { 9 | } 10 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | maven { 4 | name = "Fabric" 5 | url = uri("https://maven.fabricmc.net/") 6 | } 7 | mavenCentral() 8 | gradlePluginPortal() 9 | } 10 | } 11 | 12 | rootProject.name = "meteor-client" 13 | 14 | include("launch") 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/hud/HudGroup.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.hud; 7 | 8 | public record HudGroup(String title) { 9 | } 10 | -------------------------------------------------------------------------------- /.github/moderation/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "moderator", 3 | "version": "1.0.0", 4 | "author": "MachieCodes", 5 | "license": "MIT", 6 | "type": "module", 7 | "scripts": { 8 | "banned_terms": "node banned_terms.js" 9 | }, 10 | "dependencies": { 11 | "@actions/core": "^1.11.1", 12 | "@actions/github": "^6.0.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/IGetter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc; 7 | 8 | public interface IGetter { 9 | T get(); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/utils/AlignmentX.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.utils; 7 | 8 | public enum AlignmentX { 9 | Left, Center, Right 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/utils/AlignmentY.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.utils; 7 | 8 | public enum AlignmentY { 9 | Top, Center, Bottom 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/settings/IVisible.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.settings; 7 | 8 | public interface IVisible { 9 | boolean isVisible(); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/player/Safety.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.player; 7 | 8 | public enum Safety { 9 | Safe, 10 | Suicide 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/NbtException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc; 7 | 8 | public class NbtException extends RuntimeException { 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/render/AlignmentX.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.render; 7 | 8 | public enum AlignmentX { 9 | Left, Center, Right 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/render/AlignmentY.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.render; 7 | 8 | public enum AlignmentY { 9 | Top, Center, Bottom 10 | } 11 | -------------------------------------------------------------------------------- /src/main/resources/meteor-client-baritone.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": true, 3 | "package": "meteordevelopment.meteorclient.mixin.baritone", 4 | "compatibilityLevel": "JAVA_21", 5 | "plugin": "meteordevelopment.meteorclient.MixinPlugin", 6 | "client": [ 7 | "ComeCommandMixin" 8 | ], 9 | "injectors": { 10 | "defaultRequire": 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/IChangeable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc; 7 | 8 | public interface IChangeable { 9 | boolean isChanged(); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IText.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | public interface IText { 9 | void meteor$invalidateCache(); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/hud/XAnchor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.hud; 7 | 8 | public enum XAnchor { 9 | Left, 10 | Center, 11 | Right 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/hud/YAnchor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.hud; 7 | 8 | public enum YAnchor { 9 | Top, 10 | Center, 11 | Bottom 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/entity/Target.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.entity; 7 | 8 | public enum Target { 9 | Head, 10 | Body, 11 | Feet 12 | } 13 | -------------------------------------------------------------------------------- /src/main/resources/meteor-client-viafabricplus.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": false, 3 | "package": "meteordevelopment.meteorclient.mixin.viafabricplus", 4 | "compatibilityLevel": "JAVA_21", 5 | "plugin": "meteordevelopment.meteorclient.MixinPlugin", 6 | "client": [ 7 | "GeneralSettingsMixin" 8 | ], 9 | "injectors": { 10 | "defaultRequire": 1 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/accounts/TokenAccount.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.accounts; 7 | 8 | public interface TokenAccount { 9 | String getToken(); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/ICamera.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | public interface ICamera { 9 | void meteor$setRot(double yaw, double pitch); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/ISimpleOption.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | public interface ISimpleOption { 9 | void meteor$set(Object value); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/hud/Alignment.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.hud; 7 | 8 | public enum Alignment { 9 | Auto, 10 | Left, 11 | Center, 12 | Right 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/ISlot.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | public interface ISlot { 9 | int meteor$getId(); 10 | 11 | int meteor$getIndex(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/accounts/AccountType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.accounts; 7 | 8 | public enum AccountType { 9 | Cracked, 10 | Microsoft, 11 | TheAltening 12 | } 13 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/pos_color.vert: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | layout (location = 0) in vec4 pos; 4 | layout (location = 1) in vec4 color; 5 | 6 | layout (std140) uniform MeshData { 7 | mat4 u_Proj; 8 | mat4 u_ModelView; 9 | }; 10 | 11 | out vec4 v_Color; 12 | 13 | void main() { 14 | gl_Position = u_Proj * u_ModelView * pos; 15 | 16 | v_Color = color; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/modules/movement/speed/SpeedModes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.modules.movement.speed; 7 | 8 | public enum SpeedModes { 9 | Strafe, 10 | Vanilla 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/ICopyable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc; 7 | 8 | public interface ICopyable> { 9 | T set(T value); 10 | 11 | T copy(); 12 | } 13 | -------------------------------------------------------------------------------- /.idea/copyright/Meteor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/GuiKeyEvents.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui; 7 | 8 | public class GuiKeyEvents { 9 | public static boolean canUseKeys = true; 10 | 11 | private GuiKeyEvents() { 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IClientPlayerInteractionManager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | public interface IClientPlayerInteractionManager { 9 | void meteor$syncSelected(); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/post-process/base.vert: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | layout (location = 0) in vec4 pos; 4 | 5 | layout (std140) uniform PostData { 6 | vec2 u_Size; 7 | float u_Time; 8 | }; 9 | 10 | out vec2 v_TexCoord; 11 | out vec2 v_OneTexel; 12 | 13 | void main() { 14 | gl_Position = pos; 15 | 16 | v_TexCoord = (pos.xy + 1.0) / 2.0; 17 | v_OneTexel = 1.0 / u_Size; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/resources/meteor-client-lithium.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": false, 3 | "package": "meteordevelopment.meteorclient.mixin.lithium", 4 | "compatibilityLevel": "JAVA_21", 5 | "plugin": "meteordevelopment.meteorclient.MixinPlugin", 6 | "client": [ 7 | "ChunkAwareBlockCollisionSweeperMixin", 8 | "LithiumEntityCollisionsMixin" 9 | ], 10 | "injectors": { 11 | "defaultRequire": 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/utils/BaseWidget.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.utils; 7 | 8 | import meteordevelopment.meteorclient.gui.GuiTheme; 9 | 10 | public interface BaseWidget { 11 | GuiTheme getTheme(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IChatHud.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import net.minecraft.text.Text; 9 | 10 | public interface IChatHud { 11 | void meteor$add(Text message, int id); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/ICapabilityTracker.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | public interface ICapabilityTracker { 9 | boolean meteor$get(); 10 | 11 | void meteor$set(boolean state); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IPlayerMoveC2SPacket.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | public interface IPlayerMoveC2SPacket { 9 | int meteor$getTag(); 10 | 11 | void meteor$setTag(int tag); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IRenderPipeline.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | public interface IRenderPipeline { 9 | void meteor$setLineSmooth(boolean lineSmooth); 10 | 11 | boolean meteor$getLineSmooth(); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/modules/movement/elytrafly/ElytraFlightModes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.modules.movement.elytrafly; 7 | 8 | public enum ElytraFlightModes { 9 | Vanilla, 10 | Packet, 11 | Pitch40, 12 | Bounce 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/ISerializable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc; 7 | 8 | import net.minecraft.nbt.NbtCompound; 9 | 10 | public interface ISerializable { 11 | NbtCompound toTag(); 12 | 13 | T fromTag(NbtCompound tag); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/post-process/image.frag: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | in vec2 v_TexCoord; 4 | in vec2 v_OneTexel; 5 | 6 | uniform sampler2D u_Texture; 7 | uniform sampler2D u_TextureI; 8 | 9 | layout (std140) uniform ImageData { 10 | vec4 u_Color; 11 | }; 12 | 13 | out vec4 color; 14 | 15 | void main() { 16 | if (texture(u_Texture, v_TexCoord).a == 0.0) discard; 17 | color = texture(u_TextureI, v_TexCoord) * u_Color; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/waypoints/events/WaypointAddedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.waypoints.events; 7 | 8 | import meteordevelopment.meteorclient.systems.waypoints.Waypoint; 9 | 10 | public record WaypointAddedEvent(Waypoint waypoint) { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IChatHudLineVisible.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | public interface IChatHudLineVisible extends IChatHudLine { 9 | boolean meteor$isStartOfEntry(); 10 | void meteor$setStartOfEntry(boolean start); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/waypoints/events/WaypointRemovedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.waypoints.events; 7 | 8 | import meteordevelopment.meteorclient.systems.waypoints.Waypoint; 9 | 10 | public record WaypointRemovedEvent(Waypoint waypoint) { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IAbstractFurnaceScreenHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import net.minecraft.item.ItemStack; 9 | 10 | public interface IAbstractFurnaceScreenHandler { 11 | boolean meteor$isItemSmeltable(ItemStack itemStack); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/utils/CharFilter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.utils; 7 | 8 | public interface CharFilter { 9 | boolean filter(String text, char c); 10 | 11 | default boolean filter(String text, int i) { 12 | return filter(text, (char) i); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/renderer/text/FontFace.java: -------------------------------------------------------------------------------- 1 | package meteordevelopment.meteorclient.renderer.text; 2 | 3 | import java.io.InputStream; 4 | 5 | public abstract class FontFace { 6 | public final FontInfo info; 7 | 8 | protected FontFace(FontInfo info) { 9 | this.info = info; 10 | } 11 | 12 | public abstract InputStream toStream(); 13 | 14 | @Override 15 | public String toString() { 16 | return info.toString(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/widgets/WVerticalSeparator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.widgets; 7 | 8 | public class WVerticalSeparator extends WWidget { 9 | @Override 10 | protected void onCalculateSize() { 11 | width = theme.scale(3); 12 | height = 1; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/text.vert: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | layout (location = 0) in vec4 pos; 4 | layout (location = 1) in vec2 texCoords; 5 | layout (location = 2) in vec4 color; 6 | 7 | layout (std140) uniform MeshData { 8 | mat4 u_Proj; 9 | mat4 u_ModelView; 10 | }; 11 | 12 | out vec2 v_TexCoord; 13 | out vec4 v_Color; 14 | 15 | void main() { 16 | gl_Position = u_Proj * u_ModelView * pos; 17 | 18 | v_TexCoord = texCoords; 19 | v_Color = color; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/game/GameLeftEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.game; 7 | 8 | public class GameLeftEvent { 9 | private static final GameLeftEvent INSTANCE = new GameLeftEvent(); 10 | 11 | public static GameLeftEvent get() { 12 | return INSTANCE; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IMinecraftClient.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import net.minecraft.client.gl.Framebuffer; 9 | 10 | public interface IMinecraftClient { 11 | void meteor$rightClick(); 12 | 13 | void meteor$setFramebuffer(Framebuffer framebuffer); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/pos_tex_color.vert: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | layout (location = 0) in vec4 pos; 4 | layout (location = 1) in vec2 texCoords; 5 | layout (location = 2) in vec4 color; 6 | 7 | layout (std140) uniform MeshData { 8 | mat4 u_Proj; 9 | mat4 u_ModelView; 10 | }; 11 | 12 | out vec2 v_TexCoord; 13 | out vec4 v_Color; 14 | 15 | void main() { 16 | gl_Position = u_Proj * u_ModelView * pos; 17 | 18 | v_TexCoord = texCoords; 19 | v_Color = color; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/game/GameJoinedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.game; 7 | 8 | public class GameJoinedEvent { 9 | private static final GameJoinedEvent INSTANCE = new GameJoinedEvent(); 10 | 11 | public static GameJoinedEvent get() { 12 | return INSTANCE; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IExplosionS2CPacket.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | public interface IExplosionS2CPacket { 9 | void meteor$setVelocityX(float velocity); 10 | 11 | void meteor$setVelocityY(float velocity); 12 | 13 | void meteor$setVelocityZ(float velocity); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/render/IVertexConsumerProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.render; 7 | 8 | import net.minecraft.client.render.VertexConsumerProvider; 9 | 10 | public interface IVertexConsumerProvider extends VertexConsumerProvider { 11 | void setOffset(int offsetX, int offsetY, int offsetZ); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/tooltip/MeteorTooltipData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.tooltip; 7 | 8 | import net.minecraft.client.gui.tooltip.TooltipComponent; 9 | import net.minecraft.item.tooltip.TooltipData; 10 | 11 | public interface MeteorTooltipData extends TooltipData { 12 | TooltipComponent getComponent(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IWorldRenderer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import net.minecraft.client.gl.Framebuffer; 9 | 10 | public interface IWorldRenderer { 11 | void meteor$pushEntityOutlineFramebuffer(Framebuffer framebuffer); 12 | 13 | void meteor$popEntityOutlineFramebuffer(); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/text/ColoredText.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc.text; 7 | 8 | import meteordevelopment.meteorclient.utils.render.color.Color; 9 | 10 | /** 11 | * Encapsulates a string and the color it should have. See {@link TextUtils} 12 | */ 13 | public record ColoredText(String text, Color color) { 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/game/ResolutionChangedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.game; 7 | 8 | public class ResolutionChangedEvent { 9 | private static final ResolutionChangedEvent INSTANCE = new ResolutionChangedEvent(); 10 | 11 | public static ResolutionChangedEvent get() { 12 | return INSTANCE; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/render/RenderAfterWorldEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.render; 7 | 8 | public class RenderAfterWorldEvent { 9 | private static final RenderAfterWorldEvent INSTANCE = new RenderAfterWorldEvent(); 10 | 11 | public static RenderAfterWorldEvent get() { 12 | return INSTANCE; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/accounts/TexturesJson.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.accounts; 7 | 8 | public class TexturesJson { 9 | public Textures textures; 10 | 11 | public static class Textures { 12 | public Texture SKIN; 13 | } 14 | 15 | public static class Texture { 16 | public String url; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/game/ResourcePacksReloadedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.game; 7 | 8 | public class ResourcePacksReloadedEvent { 9 | private static final ResourcePacksReloadedEvent INSTANCE = new ResourcePacksReloadedEvent(); 10 | 11 | public static ResourcePacksReloadedEvent get() { 12 | return INSTANCE; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/meteor/ActiveModulesChangedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.meteor; 7 | 8 | public class ActiveModulesChangedEvent { 9 | private static final ActiveModulesChangedEvent INSTANCE = new ActiveModulesChangedEvent(); 10 | 11 | public static ActiveModulesChangedEvent get() { 12 | return INSTANCE; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/render/GetFovEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.render; 7 | 8 | public class GetFovEvent { 9 | private static final GetFovEvent INSTANCE = new GetFovEvent(); 10 | 11 | public float fov; 12 | 13 | public static GetFovEvent get(float fov) { 14 | INSTANCE.fov = fov; 15 | return INSTANCE; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/renderer/ShapeMode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.renderer; 7 | 8 | public enum ShapeMode { 9 | Lines, 10 | Sides, 11 | Both; 12 | 13 | public boolean lines() { 14 | return this == Lines || this == Both; 15 | } 16 | 17 | public boolean sides() { 18 | return this == Sides ||this == Both; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/EmptyIterator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc; 7 | 8 | import java.util.Iterator; 9 | 10 | public class EmptyIterator implements Iterator { 11 | @Override 12 | public boolean hasNext() { 13 | return false; 14 | } 15 | 16 | @Override 17 | public T next() { 18 | return null; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/TextMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import meteordevelopment.meteorclient.mixininterface.IText; 9 | import net.minecraft.text.Text; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | 12 | @Mixin(Text.class) 13 | public interface TextMixin extends IText { 14 | @Override 15 | default void meteor$invalidateCache() {} 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WTriangle.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.widgets.pressable; 7 | 8 | public abstract class WTriangle extends WPressable { 9 | public double rotation; 10 | 11 | @Override 12 | protected void onCalculateSize() { 13 | double s = theme.textHeight(); 14 | 15 | width = s; 16 | height = s; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/renderer/packer/TextureRegion.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.renderer.packer; 7 | 8 | public class TextureRegion { 9 | public double x1, y1; 10 | public double x2, y2; 11 | 12 | public double diagonal; 13 | 14 | public TextureRegion(double width, double height) { 15 | diagonal = Math.sqrt(width * width + height * height); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WMinus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.widgets.pressable; 7 | 8 | public abstract class WMinus extends WPressable { 9 | @Override 10 | protected void onCalculateSize() { 11 | double pad = pad(); 12 | double s = theme.textHeight(); 13 | 14 | width = pad + s + pad; 15 | height = pad + s + pad; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WPlus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.widgets.pressable; 7 | 8 | public abstract class WPlus extends WPressable { 9 | @Override 10 | protected void onCalculateSize() { 11 | double pad = pad(); 12 | double s = theme.textHeight(); 13 | 14 | width = pad + s + pad; 15 | height = pad + s + pad; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/EntityAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.entity.Entity; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(Entity.class) 13 | public interface EntityAccessor { 14 | @Accessor("touchingWater") 15 | void meteor$setInWater(boolean touchingWater); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.block.AbstractBlock; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(AbstractBlock.class) 13 | public interface AbstractBlockAccessor { 14 | @Accessor("collidable") 15 | boolean meteor$isCollidable(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/meteor/CustomFontChangedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.meteor; 7 | 8 | @SuppressWarnings("InstantiationOfUtilityClass") 9 | public class CustomFontChangedEvent { 10 | private static final CustomFontChangedEvent INSTANCE = new CustomFontChangedEvent(); 11 | 12 | public static CustomFontChangedEvent get() { 13 | return INSTANCE; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/world/Dimension.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.world; 7 | 8 | public enum Dimension { 9 | Overworld, 10 | Nether, 11 | End; 12 | 13 | public Dimension opposite() { 14 | return switch (this) { 15 | case Overworld -> Nether; 16 | case Nether -> Overworld; 17 | default -> this; 18 | }; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IChatHudLine.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import com.mojang.authlib.GameProfile; 9 | 10 | public interface IChatHudLine { 11 | String meteor$getText(); 12 | 13 | int meteor$getId(); 14 | 15 | void meteor$setId(int id); 16 | 17 | GameProfile meteor$getSender(); 18 | 19 | void meteor$setSender(GameProfile profile); 20 | } 21 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Type of change 2 | 3 | - [ ] Bug fix 4 | - [ ] New feature 5 | 6 | ## Description 7 | 8 | A summary of the changes along with the reasoning behind the changes. 9 | 10 | ## Related issues 11 | 12 | Mention any issues that this pr relates to. 13 | 14 | # How Has This Been Tested? 15 | 16 | Videos or screenshots of the changes if applicable. 17 | 18 | # Checklist: 19 | 20 | - [ ] My code follows the style guidelines of this project. 21 | - [ ] I have added comments to my code in more complex areas. 22 | - [ ] I have tested the code in both development and production environments. 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IPlayerInteractEntityC2SPacket.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import net.minecraft.entity.Entity; 9 | import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; 10 | 11 | public interface IPlayerInteractEntityC2SPacket { 12 | PlayerInteractEntityC2SPacket.InteractType meteor$getType(); 13 | 14 | Entity meteor$getEntity(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/resources/meteor-client-sodium.mixins.json: -------------------------------------------------------------------------------- 1 | { 2 | "required": false, 3 | "package": "meteordevelopment.meteorclient.mixin.sodium", 4 | "compatibilityLevel": "JAVA_21", 5 | "plugin": "meteordevelopment.meteorclient.MixinPlugin", 6 | "client": [ 7 | "MeshVertexConsumerMixin", 8 | "SodiumBlockOcclusionCacheMixin", 9 | "SodiumBlockRendererMixin", 10 | "SodiumFluidRendererImplDefaultRenderContextMixin", 11 | "SodiumFluidRendererImplMixin", 12 | "SodiumLightDataAccessMixin", 13 | "SodiumWorldRendererMixin" 14 | ], 15 | "injectors": { 16 | "defaultRequire": 1 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/world/AmbientOcclusionEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.world; 7 | 8 | public class AmbientOcclusionEvent { 9 | private static final AmbientOcclusionEvent INSTANCE = new AmbientOcclusionEvent(); 10 | 11 | public float lightLevel = -1; 12 | 13 | public static AmbientOcclusionEvent get() { 14 | INSTANCE.lightLevel = -1; 15 | return INSTANCE; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/TextHandlerAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.font.TextHandler; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(TextHandler.class) 13 | public interface TextHandlerAccessor { 14 | @Accessor("widthRetriever") 15 | TextHandler.WidthRetriever meteor$getWidthRetriever(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/PostInit.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils; 7 | 8 | import java.lang.annotation.ElementType; 9 | import java.lang.annotation.Retention; 10 | import java.lang.annotation.RetentionPolicy; 11 | import java.lang.annotation.Target; 12 | 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target(ElementType.METHOD) 15 | public @interface PostInit { 16 | Class[] dependencies() default { }; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/PreInit.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils; 7 | 8 | import java.lang.annotation.ElementType; 9 | import java.lang.annotation.Retention; 10 | import java.lang.annotation.RetentionPolicy; 11 | import java.lang.annotation.Target; 12 | 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target(ElementType.METHOD) 15 | public @interface PreInit { 16 | Class[] dependencies() default { }; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/world/ChunkDataEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.world; 7 | 8 | import net.minecraft.world.chunk.WorldChunk; 9 | 10 | /** 11 | * @implNote Shouldn't be put in a {@link meteordevelopment.meteorclient.utils.misc.Pool} to avoid a race-condition, or in a {@link ThreadLocal} as it is shared between threads. 12 | * @author Crosby 13 | */ 14 | public record ChunkDataEvent(WorldChunk chunk) {} 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ReloadStateAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.resource.ResourceReloadLogger; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(ResourceReloadLogger.ReloadState.class) 13 | public interface ReloadStateAccessor { 14 | @Accessor("finished") 15 | boolean meteor$isFinished(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IRaycastContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import net.minecraft.entity.Entity; 9 | import net.minecraft.util.math.Vec3d; 10 | import net.minecraft.world.RaycastContext; 11 | 12 | public interface IRaycastContext { 13 | void meteor$set(Vec3d start, Vec3d end, RaycastContext.ShapeType shapeType, RaycastContext.FluidHandling fluidHandling, Entity entity); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/FishingBobberEntityAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.entity.projectile.FishingBobberEntity; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(FishingBobberEntity.class) 13 | public interface FishingBobberEntityAccessor { 14 | @Accessor("caughtFish") 15 | boolean meteor$hasCaughtFish(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkManagerAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.world.ClientChunkManager; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(ClientChunkManager.class) 13 | public interface ClientChunkManagerAccessor { 14 | @Accessor("chunks") 15 | ClientChunkManager.ClientChunkMap meteor$getChunks(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/StatusEffectInstanceAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.entity.effect.StatusEffectInstance; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(StatusEffectInstance.class) 13 | public interface StatusEffectInstanceAccessor { 14 | @Accessor("duration") 15 | void meteor$setDuration(int duration); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ClientConnectionAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import io.netty.channel.Channel; 9 | import net.minecraft.network.ClientConnection; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(ClientConnection.class) 14 | public interface ClientConnectionAccessor { 15 | @Accessor("channel") 16 | Channel meteor$getChannel(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/PlayerSkinProviderAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.texture.PlayerSkinProvider; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(PlayerSkinProvider.class) 13 | public interface PlayerSkinProviderAccessor { 14 | @Accessor("skinCache") 15 | PlayerSkinProvider.FileCache meteor$getSkinCache(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ProjectileInGroundAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.entity.projectile.PersistentProjectileEntity; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Invoker; 11 | 12 | @Mixin(PersistentProjectileEntity.class) 13 | public interface ProjectileInGroundAccessor { 14 | @Invoker("isInGround") 15 | boolean meteor$invokeIsInGround(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/modules/player/Portals.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.modules.player; 7 | 8 | import meteordevelopment.meteorclient.systems.modules.Categories; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | 11 | public class Portals extends Module { 12 | public Portals() { 13 | super(Categories.Player, "portals", "Allows you to use GUIs normally while in a Nether Portal."); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/EntityAddedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity; 7 | 8 | import net.minecraft.entity.Entity; 9 | 10 | public class EntityAddedEvent { 11 | private static final EntityAddedEvent INSTANCE = new EntityAddedEvent(); 12 | 13 | public Entity entity; 14 | 15 | public static EntityAddedEvent get(Entity entity) { 16 | INSTANCE.entity = entity; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/DirectionAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.util.math.Direction; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(Direction.class) 13 | public interface DirectionAccessor { 14 | @Accessor("HORIZONTAL") 15 | static Direction[] meteor$getHorizontal() { 16 | throw new AssertionError(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/FileCacheAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.texture.PlayerSkinProvider; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | import java.nio.file.Path; 13 | 14 | @Mixin(PlayerSkinProvider.FileCache.class) 15 | public interface FileCacheAccessor { 16 | @Accessor("directory") 17 | Path meteor$getDirectory(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/RenderLayerAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.render.RenderLayer; 9 | import net.minecraft.client.render.RenderSetup; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(RenderLayer.class) 14 | public interface RenderLayerAccessor { 15 | @Accessor("renderSetup") 16 | RenderSetup getRenderSetup(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/modules/misc/BetterBeacons.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.modules.misc; 7 | 8 | import meteordevelopment.meteorclient.systems.modules.Categories; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | 11 | public class BetterBeacons extends Module { 12 | public BetterBeacons() { 13 | super(Categories.Misc, "better-beacons", "Select effects unaffected by beacon level."); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/modules/player/LiquidInteract.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.modules.player; 7 | 8 | import meteordevelopment.meteorclient.systems.modules.Categories; 9 | import meteordevelopment.meteorclient.systems.modules.Module; 10 | 11 | public class LiquidInteract extends Module { 12 | public LiquidInteract() { 13 | super(Categories.Player, "liquid-interact", "Allows you to interact with liquids."); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/EntityDestroyEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity; 7 | 8 | import net.minecraft.entity.Entity; 9 | 10 | public class EntityDestroyEvent { 11 | private static final EntityDestroyEvent INSTANCE = new EntityDestroyEvent(); 12 | 13 | public Entity entity; 14 | 15 | public static EntityDestroyEvent get(Entity entity) { 16 | INSTANCE.entity = entity; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/EntityRemovedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity; 7 | 8 | import net.minecraft.entity.Entity; 9 | 10 | public class EntityRemovedEvent { 11 | private static final EntityRemovedEvent INSTANCE = new EntityRemovedEvent(); 12 | 13 | public Entity entity; 14 | 15 | public static EntityRemovedEvent get(Entity entity) { 16 | INSTANCE.entity = entity; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/PlayerTickMovementEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | /** 9 | * @see net.minecraft.client.network.ClientPlayerEntity#tickMovement() 10 | */ 11 | public class PlayerTickMovementEvent { 12 | private static final PlayerTickMovementEvent INSTANCE = new PlayerTickMovementEvent(); 13 | 14 | public static PlayerTickMovementEvent get() { 15 | return INSTANCE; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/world/ChunkOcclusionEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.world; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | 10 | public class ChunkOcclusionEvent extends Cancellable { 11 | private static final ChunkOcclusionEvent INSTANCE = new ChunkOcclusionEvent(); 12 | 13 | public static ChunkOcclusionEvent get() { 14 | INSTANCE.setCancelled(false); 15 | return INSTANCE; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/EntityBucketItemAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.entity.EntityType; 9 | import net.minecraft.item.EntityBucketItem; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(EntityBucketItem.class) 14 | public interface EntityBucketItemAccessor { 15 | @Accessor("entityType") 16 | EntityType meteor$getEntityType(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/HandledScreenAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.gui.screen.ingame.HandledScreen; 9 | import net.minecraft.screen.slot.Slot; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(HandledScreen.class) 14 | public interface HandledScreenAccessor { 15 | @Accessor("focusedSlot") 16 | Slot meteor$getFocusedSlot(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/MountScreenHandlerAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.entity.LivingEntity; 9 | import net.minecraft.screen.MountScreenHandler; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(MountScreenHandler.class) 14 | public interface MountScreenHandlerAccessor { 15 | @Accessor("mount") 16 | LivingEntity meteor$getMount(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ResourceReloadLoggerAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.resource.ResourceReloadLogger; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(ResourceReloadLogger.class) 13 | public interface ResourceReloadLoggerAccessor { 14 | @Accessor("reloadState") 15 | ResourceReloadLogger.ReloadState meteor$getReloadState(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/JumpVelocityMultiplierEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | public class JumpVelocityMultiplierEvent { 9 | private static final JumpVelocityMultiplierEvent INSTANCE = new JumpVelocityMultiplierEvent(); 10 | 11 | public float multiplier = 1; 12 | 13 | public static JumpVelocityMultiplierEvent get() { 14 | INSTANCE.multiplier = 1; 15 | return INSTANCE; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/BlockBreakingCooldownEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | public class BlockBreakingCooldownEvent { 9 | private static final BlockBreakingCooldownEvent INSTANCE = new BlockBreakingCooldownEvent(); 10 | 11 | public int cooldown; 12 | 13 | public static BlockBreakingCooldownEvent get(int cooldown) { 14 | INSTANCE.cooldown = cooldown; 15 | return INSTANCE; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.entity.EntityPose; 9 | import net.minecraft.entity.player.PlayerEntity; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Invoker; 12 | 13 | @Mixin(PlayerEntity.class) 14 | public interface PlayerEntityAccessor { 15 | @Invoker("canChangeIntoPose") 16 | boolean meteor$canChangeIntoPose(EntityPose pose); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/pathing/BaritoneUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.pathing; 7 | 8 | import baritone.api.BaritoneAPI; 9 | 10 | public class BaritoneUtils { 11 | public static boolean IS_AVAILABLE = false; 12 | 13 | private BaritoneUtils() { 14 | } 15 | 16 | public static String getPrefix() { 17 | if (IS_AVAILABLE) { 18 | return BaritoneAPI.getSettings().prefix.value; 19 | } 20 | 21 | return ""; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/Cancellable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events; 7 | 8 | import meteordevelopment.orbit.ICancellable; 9 | 10 | public class Cancellable implements ICancellable { 11 | private boolean cancelled = false; 12 | 13 | @Override 14 | public void setCancelled(boolean cancelled) { 15 | this.cancelled = cancelled; 16 | } 17 | 18 | @Override 19 | public boolean isCancelled() { 20 | return cancelled; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/BoatMoveEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity; 7 | 8 | import net.minecraft.entity.vehicle.AbstractBoatEntity; 9 | 10 | public class BoatMoveEvent { 11 | private static final BoatMoveEvent INSTANCE = new BoatMoveEvent(); 12 | 13 | public AbstractBoatEntity boat; 14 | 15 | public static BoatMoveEvent get(AbstractBoatEntity entity) { 16 | INSTANCE.boat = entity; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.network.ClientPlayerEntity; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(ClientPlayerEntity.class) 13 | public interface ClientPlayerEntityAccessor { 14 | @Accessor("ticksSinceLastPositionPacketSent") 15 | void meteor$setTicksSinceLastPositionPacketSent(int ticks); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/MinecraftServerAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.server.MinecraftServer; 9 | import net.minecraft.world.level.storage.LevelStorage; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(MinecraftServer.class) 14 | public interface MinecraftServerAccessor { 15 | @Accessor("session") 16 | LevelStorage.Session meteor$getSession(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ProjectionMatrix2Accessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.render.ProjectionMatrix2; 9 | import org.joml.Matrix4f; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Invoker; 12 | 13 | @Mixin(ProjectionMatrix2.class) 14 | public interface ProjectionMatrix2Accessor { 15 | @Invoker("getMatrix") 16 | Matrix4f meteor$callGetMatrix(float width, float height); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/WorldAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.entity.Entity; 9 | import net.minecraft.world.World; 10 | import net.minecraft.world.entity.EntityLookup; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.gen.Invoker; 13 | 14 | @Mixin(World.class) 15 | public interface WorldAccessor { 16 | @Invoker("getEntityLookup") 17 | EntityLookup meteor$getEntityLookup(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/input/KeyAction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc.input; 7 | 8 | import org.lwjgl.glfw.GLFW; 9 | 10 | public enum KeyAction { 11 | Press, 12 | Repeat, 13 | Release; 14 | 15 | public static KeyAction get(int action) { 16 | return switch (action) { 17 | case GLFW.GLFW_PRESS -> Press; 18 | case GLFW.GLFW_RELEASE -> Release; 19 | default -> Repeat; 20 | }; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/world/BlockActivateEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.world; 7 | 8 | import net.minecraft.block.BlockState; 9 | 10 | public class BlockActivateEvent { 11 | private static final BlockActivateEvent INSTANCE = new BlockActivateEvent(); 12 | 13 | public BlockState blockState; 14 | 15 | public static BlockActivateEvent get(BlockState blockState) { 16 | INSTANCE.blockState = blockState; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ShulkerBoxScreenHandlerAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.inventory.Inventory; 9 | import net.minecraft.screen.ShulkerBoxScreenHandler; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(ShulkerBoxScreenHandler.class) 14 | public interface ShulkerBoxScreenHandlerAccessor { 15 | @Accessor("inventory") 16 | Inventory meteor$getInventory(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IBox.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import net.minecraft.util.math.BlockPos; 9 | 10 | public interface IBox { 11 | void meteor$expand(double v); 12 | 13 | void meteor$set(double x1, double y1, double z1, double x2, double y2, double z2); 14 | 15 | default void meteor$set(BlockPos pos) { 16 | meteor$set(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/modules/movement/elytrafly/modes/Vanilla.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.modules.movement.elytrafly.modes; 7 | 8 | import meteordevelopment.meteorclient.systems.modules.movement.elytrafly.ElytraFlightMode; 9 | import meteordevelopment.meteorclient.systems.modules.movement.elytrafly.ElytraFlightModes; 10 | 11 | public class Vanilla extends ElytraFlightMode { 12 | public Vanilla() { 13 | super(ElytraFlightModes.Vanilla); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/packets/InventoryEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.packets; 7 | 8 | import net.minecraft.network.packet.s2c.play.InventoryS2CPacket; 9 | 10 | public class InventoryEvent { 11 | private static final InventoryEvent INSTANCE = new InventoryEvent(); 12 | 13 | public InventoryS2CPacket packet; 14 | 15 | public static InventoryEvent get(InventoryS2CPacket packet) { 16 | INSTANCE.packet = packet; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/world/ServerConnectEndEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.world; 7 | 8 | import java.net.InetSocketAddress; 9 | 10 | public class ServerConnectEndEvent { 11 | private static final ServerConnectEndEvent INSTANCE = new ServerConnectEndEvent(); 12 | public InetSocketAddress address; 13 | 14 | public static ServerConnectEndEvent get(InetSocketAddress address) { 15 | INSTANCE.address = address; 16 | return INSTANCE; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/text/RunnableClickEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc.text; 7 | 8 | /** 9 | * Allows arbitrary code execution in a click event 10 | */ 11 | public class RunnableClickEvent extends MeteorClickEvent { 12 | public final Runnable runnable; 13 | 14 | public RunnableClickEvent(Runnable runnable) { 15 | super(null); // Should ensure no vanilla code is triggered, and only we handle it 16 | this.runnable = runnable; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/meteor/CharTypedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.meteor; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | 10 | public class CharTypedEvent extends Cancellable { 11 | private static final CharTypedEvent INSTANCE = new CharTypedEvent(); 12 | 13 | public char c; 14 | 15 | public static CharTypedEvent get(char c) { 16 | INSTANCE.setCancelled(false); 17 | INSTANCE.c = c; 18 | return INSTANCE; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/FinishUsingItemEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import net.minecraft.item.ItemStack; 9 | 10 | public class FinishUsingItemEvent { 11 | private static final FinishUsingItemEvent INSTANCE = new FinishUsingItemEvent(); 12 | 13 | public ItemStack itemStack; 14 | 15 | public static FinishUsingItemEvent get(ItemStack itemStack) { 16 | INSTANCE.itemStack = itemStack; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/meteor/ModuleBindChangedEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.meteor; 7 | 8 | import meteordevelopment.meteorclient.systems.modules.Module; 9 | 10 | public class ModuleBindChangedEvent { 11 | private static final ModuleBindChangedEvent INSTANCE = new ModuleBindChangedEvent(); 12 | 13 | public Module module; 14 | 15 | public static ModuleBindChangedEvent get(Module module) { 16 | INSTANCE.module = module; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/widgets/WQuad.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.widgets; 7 | 8 | import meteordevelopment.meteorclient.utils.render.color.Color; 9 | 10 | public abstract class WQuad extends WWidget { 11 | public Color color; 12 | 13 | public WQuad(Color color) { 14 | this.color = color; 15 | } 16 | 17 | @Override 18 | protected void onCalculateSize() { 19 | double s = theme.scale(32); 20 | 21 | width = s; 22 | height = s; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/proxies/ProxyType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.proxies; 7 | 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | public enum ProxyType { 11 | Socks4, 12 | Socks5; 13 | 14 | @Nullable 15 | public static ProxyType parse(String group) { 16 | for (ProxyType type : values()) { 17 | if (type.name().equalsIgnoreCase(group)) { 18 | return type; 19 | } 20 | } 21 | return null; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/MissHitResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc; 7 | 8 | import net.minecraft.util.hit.HitResult; 9 | import net.minecraft.util.math.Vec3d; 10 | 11 | public class MissHitResult extends HitResult { 12 | public static final MissHitResult INSTANCE = new MissHitResult(); 13 | 14 | private MissHitResult() { 15 | super(new Vec3d(0, 0, 0)); 16 | } 17 | 18 | @Override 19 | public Type getType() { 20 | return Type.MISS; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/StoppedUsingItemEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import net.minecraft.item.ItemStack; 9 | 10 | public class StoppedUsingItemEvent { 11 | private static final StoppedUsingItemEvent INSTANCE = new StoppedUsingItemEvent(); 12 | 13 | public ItemStack itemStack; 14 | 15 | public static StoppedUsingItemEvent get(ItemStack itemStack) { 16 | INSTANCE.itemStack = itemStack; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignEditScreenAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.block.entity.SignBlockEntity; 9 | import net.minecraft.client.gui.screen.ingame.AbstractSignEditScreen; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(AbstractSignEditScreen.class) 14 | public interface AbstractSignEditScreenAccessor { 15 | @Accessor("blockEntity") 16 | SignBlockEntity meteor$getSign(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/CrossbowItemAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.component.type.ChargedProjectilesComponent; 9 | import net.minecraft.item.CrossbowItem; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Invoker; 12 | 13 | @Mixin(CrossbowItem.class) 14 | public interface CrossbowItemAccessor { 15 | @Invoker("getSpeed") 16 | static float meteor$getSpeed(ChargedProjectilesComponent itemStack) { return 0; } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/LayerRenderStateAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.render.item.ItemRenderState; 9 | import net.minecraft.client.render.model.json.Transformation; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(ItemRenderState.LayerRenderState.class) 14 | public interface LayerRenderStateAccessor { 15 | @Accessor("transform") 16 | Transformation meteor$getTransform(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/EntityTrackingSectionAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.util.collection.TypeFilterableList; 9 | import net.minecraft.world.entity.EntityTrackingSection; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(EntityTrackingSection.class) 14 | public interface EntityTrackingSectionAccessor { 15 | @Accessor("collection") 16 | TypeFilterableList meteor$getCollection(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ItemRenderStateAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.render.item.ItemRenderState; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.gen.Accessor; 11 | 12 | @Mixin(ItemRenderState.class) 13 | public interface ItemRenderStateAccessor { 14 | @Accessor("layerCount") 15 | int meteor$getLayerCount(); 16 | 17 | @Accessor("layers") 18 | ItemRenderState.LayerRenderState[] meteor$getLayers(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/settings/IGeneric.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.settings; 7 | 8 | import meteordevelopment.meteorclient.gui.GuiTheme; 9 | import meteordevelopment.meteorclient.gui.WidgetScreen; 10 | import meteordevelopment.meteorclient.utils.misc.ICopyable; 11 | import meteordevelopment.meteorclient.utils.misc.ISerializable; 12 | 13 | public interface IGeneric> extends ICopyable, ISerializable { 14 | WidgetScreen createScreen(GuiTheme theme, GenericSetting setting); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderManagerAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.render.block.entity.BlockEntityRenderManager; 9 | import net.minecraft.client.texture.SpriteHolder; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(BlockEntityRenderManager.class) 14 | public interface BlockEntityRenderManagerAccessor { 15 | @Accessor("spriteHolder") 16 | SpriteHolder getSpriteHolder(); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/BlockHitResultAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.util.hit.BlockHitResult; 9 | import net.minecraft.util.math.Direction; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.Mutable; 12 | import org.spongepowered.asm.mixin.gen.Accessor; 13 | 14 | @Mixin(BlockHitResult.class) 15 | public interface BlockHitResultAccessor { 16 | @Mutable 17 | @Accessor("side") 18 | void meteor$setSide(Direction direction); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ChunkAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.block.entity.BlockEntity; 9 | import net.minecraft.util.math.BlockPos; 10 | import net.minecraft.world.chunk.Chunk; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.gen.Accessor; 13 | 14 | import java.util.Map; 15 | 16 | @Mixin(Chunk.class) 17 | public interface ChunkAccessor { 18 | @Accessor("blockEntities") 19 | Map getBlockEntities(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/ItemUseCrosshairTargetEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import net.minecraft.util.hit.HitResult; 9 | 10 | public class ItemUseCrosshairTargetEvent { 11 | private static final ItemUseCrosshairTargetEvent INSTANCE = new ItemUseCrosshairTargetEvent(); 12 | 13 | public HitResult target; 14 | 15 | public static ItemUseCrosshairTargetEvent get(HitResult target) { 16 | INSTANCE.target = target; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/meteor/MouseScrollEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.meteor; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | 10 | public class MouseScrollEvent extends Cancellable { 11 | private static final MouseScrollEvent INSTANCE = new MouseScrollEvent(); 12 | 13 | public double value; 14 | 15 | public static MouseScrollEvent get(double value) { 16 | INSTANCE.setCancelled(false); 17 | INSTANCE.value = value; 18 | return INSTANCE; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/packets/PlaySoundPacketEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.packets; 7 | 8 | import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; 9 | 10 | public class PlaySoundPacketEvent { 11 | 12 | private static final PlaySoundPacketEvent INSTANCE = new PlaySoundPacketEvent(); 13 | 14 | public PlaySoundS2CPacket packet; 15 | 16 | public static PlaySoundPacketEvent get(PlaySoundS2CPacket packet) { 17 | INSTANCE.packet = packet; 18 | return INSTANCE; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ContainerComponentAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.component.type.ContainerComponent; 9 | import net.minecraft.item.ItemStack; 10 | import net.minecraft.util.collection.DefaultedList; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.gen.Accessor; 13 | 14 | @Mixin(ContainerComponent.class) 15 | public interface ContainerComponentAccessor { 16 | @Accessor("stacks") 17 | DefaultedList meteor$getStacks(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IMessageHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import com.mojang.authlib.GameProfile; 9 | import net.minecraft.client.gui.hud.MessageIndicator; 10 | import net.minecraft.network.message.MessageSignatureData; 11 | import net.minecraft.text.Text; 12 | 13 | public interface IMessageHandler { 14 | /** Only valid inside of {@link net.minecraft.client.gui.hud.ChatHud#addMessage(Text, MessageSignatureData, MessageIndicator)} call */ 15 | GameProfile meteor$getSender(); 16 | } 17 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/blur_down.frag: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | precision lowp float; 4 | 5 | in vec2 uv; 6 | out vec4 color; 7 | 8 | uniform sampler2D u_Texture; 9 | 10 | layout (std140) uniform BlurData { 11 | vec2 u_HalfTexelSize; 12 | float u_Offset; 13 | }; 14 | 15 | void main() { 16 | color = ( 17 | texture(u_Texture, uv) * 4 + 18 | texture(u_Texture, uv - u_HalfTexelSize * u_Offset) + 19 | texture(u_Texture, uv + u_HalfTexelSize * u_Offset) + 20 | texture(u_Texture, uv + vec2(u_HalfTexelSize.x, -u_HalfTexelSize.y) * u_Offset) + 21 | texture(u_Texture, uv - vec2(u_HalfTexelSize.x, -u_HalfTexelSize.y) * u_Offset) 22 | ) / 8; 23 | color.a = 1; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerEntityAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.network.AbstractClientPlayerEntity; 9 | import net.minecraft.client.network.PlayerListEntry; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(AbstractClientPlayerEntity.class) 14 | public interface AbstractClientPlayerEntityAccessor { 15 | @Accessor("playerListEntry") 16 | void meteor$setPlayerListEntry(PlayerListEntry entry); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/CreativeInventoryScreenAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; 9 | import net.minecraft.item.ItemGroup; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(CreativeInventoryScreen.class) 14 | public interface CreativeInventoryScreenAccessor { 15 | @Accessor("selectedTab") 16 | static ItemGroup meteor$getSelectedTab() { 17 | return null; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/DrawContextAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.gui.DrawContext; 9 | import net.minecraft.client.gui.render.state.GuiRenderState; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(DrawContext.class) 14 | public interface DrawContextAccessor { 15 | @Accessor("state") 16 | GuiRenderState getState(); 17 | 18 | @Accessor("scissorStack") 19 | DrawContext.ScissorStack getScissorStack(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ItemGroupsAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.item.ItemGroup; 9 | import net.minecraft.item.ItemGroups; 10 | import net.minecraft.registry.RegistryKey; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.gen.Accessor; 13 | 14 | @Mixin(ItemGroups.class) 15 | public interface ItemGroupsAccessor { 16 | @Accessor("INVENTORY") 17 | static RegistryKey meteor$getInventory() { 18 | throw new AssertionError(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/PickItemsEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import net.minecraft.item.ItemStack; 9 | 10 | public class PickItemsEvent { 11 | private static final PickItemsEvent INSTANCE = new PickItemsEvent(); 12 | 13 | public ItemStack itemStack; 14 | public int count; 15 | 16 | public static PickItemsEvent get(ItemStack itemStack, int count) { 17 | INSTANCE.itemStack = itemStack; 18 | INSTANCE.count = count; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/game/SendMessageEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.game; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | 10 | public class SendMessageEvent extends Cancellable { 11 | private static final SendMessageEvent INSTANCE = new SendMessageEvent(); 12 | 13 | public String message; 14 | 15 | public static SendMessageEvent get(String message) { 16 | INSTANCE.setCancelled(false); 17 | INSTANCE.message = message; 18 | return INSTANCE; 19 | } 20 | } 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/ModMenuIntegration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient; 7 | 8 | import com.terraformersmc.modmenu.api.ConfigScreenFactory; 9 | import com.terraformersmc.modmenu.api.ModMenuApi; 10 | import meteordevelopment.meteorclient.gui.GuiThemes; 11 | import meteordevelopment.meteorclient.gui.screens.ModulesScreen; 12 | 13 | public class ModMenuIntegration implements ModMenuApi { 14 | @Override 15 | public ConfigScreenFactory getModConfigScreenFactory() { 16 | return screen -> new ModulesScreen(GuiThemes.get()); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/systems/accounts/UuidToProfileResponse.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.systems.accounts; 7 | 8 | public class UuidToProfileResponse { 9 | public Property[] properties; 10 | 11 | public String getPropertyValue(String name) { 12 | for (Property property : properties) { 13 | if (property.name.equals(name)) return property.value; 14 | } 15 | 16 | return null; 17 | } 18 | 19 | public static class Property { 20 | public String name; 21 | public String value; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkMapAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.world.ClientChunkManager; 9 | import net.minecraft.world.chunk.WorldChunk; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | import java.util.concurrent.atomic.AtomicReferenceArray; 14 | 15 | @Mixin(ClientChunkManager.ClientChunkMap.class) 16 | public interface ClientChunkMapAccessor { 17 | @Accessor("chunks") 18 | AtomicReferenceArray meteor$getChunks(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/SimpleEntityLookupAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.world.entity.EntityLike; 9 | import net.minecraft.world.entity.SectionedEntityCache; 10 | import net.minecraft.world.entity.SimpleEntityLookup; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.gen.Accessor; 13 | 14 | @Mixin(SimpleEntityLookup.class) 15 | public interface SimpleEntityLookupAccessor { 16 | @Accessor("cache") 17 | SectionedEntityCache meteor$getCache(); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import it.unimi.dsi.fastutil.ints.Int2ObjectMap; 9 | 10 | import net.minecraft.client.render.WorldRenderer; 11 | import net.minecraft.entity.player.BlockBreakingInfo; 12 | import org.spongepowered.asm.mixin.Mixin; 13 | import org.spongepowered.asm.mixin.gen.Accessor; 14 | 15 | @Mixin(WorldRenderer.class) 16 | public interface WorldRendererAccessor { 17 | @Accessor("blockBreakingInfos") 18 | Int2ObjectMap meteor$getBlockBreakingInfos(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/world/TickEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.world; 7 | 8 | public class TickEvent { 9 | public static class Pre extends TickEvent { 10 | private static final Pre INSTANCE = new Pre(); 11 | 12 | public static Pre get() { 13 | return INSTANCE; 14 | } 15 | } 16 | 17 | public static class Post extends TickEvent { 18 | private static final Post INSTANCE = new Post(); 19 | 20 | public static Post get() { 21 | return INSTANCE; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.github/builds/get_number.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | import { getMcVersion } from "./mc_version.js" 7 | 8 | const mcVersion = await getMcVersion(); 9 | 10 | fetch("https://meteorclient.com/api/stats") 11 | .then(async res => { 12 | let stats = await res.json() 13 | let build = 0 14 | 15 | if (mcVersion in stats.builds) { 16 | build = parseInt(stats.builds[mcVersion]) 17 | } 18 | 19 | console.log("number=" + (build + 1)) 20 | }) 21 | .catch(err => { 22 | console.log("Failed to fetch stats:") 23 | console.log(err) 24 | process.exit(1) 25 | }) 26 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/EntityMoveEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity; 7 | 8 | import net.minecraft.entity.Entity; 9 | import net.minecraft.util.math.Vec3d; 10 | 11 | public class EntityMoveEvent { 12 | private static final EntityMoveEvent INSTANCE = new EntityMoveEvent(); 13 | 14 | public Entity entity; 15 | public Vec3d movement; 16 | 17 | public static EntityMoveEvent get(Entity entity, Vec3d movement) { 18 | INSTANCE.entity = entity; 19 | INSTANCE.movement = movement; 20 | return INSTANCE; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/SendMovementPacketsEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | public class SendMovementPacketsEvent { 9 | public static class Pre { 10 | private static final Pre INSTANCE = new Pre(); 11 | 12 | public static Pre get() { 13 | return INSTANCE; 14 | } 15 | } 16 | 17 | public static class Post { 18 | private static final Post INSTANCE = new Post(); 19 | 20 | public static Post get() { 21 | return INSTANCE; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/game/OpenScreenEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.game; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.client.gui.screen.Screen; 10 | 11 | public class OpenScreenEvent extends Cancellable { 12 | private static final OpenScreenEvent INSTANCE = new OpenScreenEvent(); 13 | 14 | public Screen screen; 15 | 16 | public static OpenScreenEvent get(Screen screen) { 17 | INSTANCE.setCancelled(false); 18 | INSTANCE.screen = screen; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/DropItemsEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.item.ItemStack; 10 | 11 | public class DropItemsEvent extends Cancellable { 12 | private static final DropItemsEvent INSTANCE = new DropItemsEvent(); 13 | 14 | public ItemStack itemStack; 15 | 16 | public static DropItemsEvent get(ItemStack itemStack) { 17 | INSTANCE.setCancelled(false); 18 | INSTANCE.itemStack = itemStack; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractItemEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import net.minecraft.util.ActionResult; 9 | import net.minecraft.util.Hand; 10 | 11 | public class InteractItemEvent { 12 | private static final InteractItemEvent INSTANCE = new InteractItemEvent(); 13 | 14 | public Hand hand; 15 | public ActionResult toReturn; 16 | 17 | public static InteractItemEvent get(Hand hand) { 18 | INSTANCE.hand = hand; 19 | INSTANCE.toReturn = null; 20 | 21 | return INSTANCE; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/render/ArmRenderEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.render; 7 | 8 | 9 | import net.minecraft.client.util.math.MatrixStack; 10 | import net.minecraft.util.Hand; 11 | 12 | public class ArmRenderEvent { 13 | public static ArmRenderEvent INSTANCE = new ArmRenderEvent(); 14 | 15 | public MatrixStack matrix; 16 | public Hand hand; 17 | 18 | public static ArmRenderEvent get(Hand hand, MatrixStack matrices) { 19 | INSTANCE.matrix = matrices; 20 | INSTANCE.hand = hand; 21 | 22 | return INSTANCE; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/widgets/WHorizontalSeparator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.widgets; 7 | 8 | public abstract class WHorizontalSeparator extends WWidget { 9 | protected String text; 10 | protected double textWidth; 11 | 12 | public WHorizontalSeparator(String text) { 13 | this.text = text; 14 | } 15 | 16 | @Override 17 | protected void onCalculateSize() { 18 | if (text != null) textWidth = theme.textWidth(text); 19 | 20 | width = 1; 21 | height = text != null ? theme.textHeight() : theme.scale(3); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ChatHudAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.gui.hud.ChatHud; 9 | import net.minecraft.client.gui.hud.ChatHudLine; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | import java.util.List; 14 | 15 | @Mixin(ChatHud.class) 16 | public interface ChatHudAccessor { 17 | @Accessor("visibleMessages") 18 | List meteor$getVisibleMessages(); 19 | 20 | @Accessor("messages") 21 | List meteor$getMessages(); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/MapTextureManagerAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.texture.MapTextureManager; 9 | import net.minecraft.component.type.MapIdComponent; 10 | import net.minecraft.item.map.MapState; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.gen.Invoker; 13 | 14 | @Mixin(MapTextureManager.class) 15 | public interface MapTextureManagerAccessor { 16 | @Invoker("getMapTexture") 17 | MapTextureManager.MapTexture meteor$invokeGetMapTexture(MapIdComponent id, MapState state); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/packets/ContainerSlotUpdateEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.packets; 7 | 8 | import net.minecraft.network.packet.s2c.play.ScreenHandlerSlotUpdateS2CPacket; 9 | 10 | public class ContainerSlotUpdateEvent { 11 | private static final ContainerSlotUpdateEvent INSTANCE = new ContainerSlotUpdateEvent(); 12 | 13 | public ScreenHandlerSlotUpdateS2CPacket packet; 14 | 15 | public static ContainerSlotUpdateEvent get(ScreenHandlerSlotUpdateS2CPacket packet) { 16 | INSTANCE.packet = packet; 17 | return INSTANCE; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/world/PlaySoundEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.world; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.client.sound.SoundInstance; 10 | 11 | public class PlaySoundEvent extends Cancellable { 12 | private static final PlaySoundEvent INSTANCE = new PlaySoundEvent(); 13 | 14 | public SoundInstance sound; 15 | 16 | public static PlaySoundEvent get(SoundInstance sound) { 17 | INSTANCE.setCancelled(false); 18 | INSTANCE.sound = sound; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /.github/workflows/pull-request.yml: -------------------------------------------------------------------------------- 1 | name: Build Pull Request 2 | 3 | on: [ pull_request ] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - name: Checkout Repository 11 | uses: actions/checkout@v4 12 | with: 13 | persist-credentials: false 14 | 15 | - name: Set up Gradle 16 | uses: gradle/actions/setup-gradle@v4 17 | 18 | - name: Set up Java 19 | uses: actions/setup-java@v4 20 | with: 21 | distribution: 'temurin' 22 | java-version: '21' 23 | 24 | - name: Build 25 | run: ./gradlew build 26 | 27 | - name: Upload Artifact 28 | uses: actions/upload-artifact@v4 29 | with: 30 | name: pull-request-build 31 | path: build/libs/ 32 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/AttackEntityEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.entity.Entity; 10 | 11 | public class AttackEntityEvent extends Cancellable { 12 | private static final AttackEntityEvent INSTANCE = new AttackEntityEvent(); 13 | 14 | public Entity entity; 15 | 16 | public static AttackEntityEvent get(Entity entity) { 17 | INSTANCE.setCancelled(false); 18 | INSTANCE.entity = entity; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/world/ParticleEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.world; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.particle.ParticleEffect; 10 | 11 | public class ParticleEvent extends Cancellable { 12 | private static final ParticleEvent INSTANCE = new ParticleEvent(); 13 | 14 | public ParticleEffect particle; 15 | 16 | public static ParticleEvent get(ParticleEffect particle) { 17 | INSTANCE.setCancelled(false); 18 | INSTANCE.particle = particle; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IVec3d.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import net.minecraft.util.math.Vec3i; 9 | import org.joml.Vector3d; 10 | 11 | public interface IVec3d { 12 | void meteor$set(double x, double y, double z); 13 | 14 | default void meteor$set(Vec3i vec) { 15 | meteor$set(vec.getX(), vec.getY(), vec.getZ()); 16 | } 17 | 18 | default void meteor$set(Vector3d vec) { 19 | meteor$set(vec.x, vec.y, vec.z); 20 | } 21 | 22 | void meteor$setXZ(double x, double z); 23 | 24 | void meteor$setY(double y); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/EntityVelocityUpdateS2CPacketAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket; 9 | import net.minecraft.util.math.Vec3d; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.Mutable; 12 | import org.spongepowered.asm.mixin.gen.Accessor; 13 | 14 | @Mixin(EntityVelocityUpdateS2CPacket.class) 15 | public interface EntityVelocityUpdateS2CPacketAccessor { 16 | @Mutable 17 | @Accessor("velocity") 18 | void meteor$setVelocity(Vec3d velocity); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/PlayerMoveC2SPacketAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.Mutable; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(PlayerMoveC2SPacket.class) 14 | public interface PlayerMoveC2SPacketAccessor { 15 | @Mutable 16 | @Accessor("y") 17 | void meteor$setY(double y); 18 | 19 | @Mutable 20 | @Accessor("onGround") 21 | void meteor$setOnGround(boolean onGround); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/BreakBlockEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.util.math.BlockPos; 10 | 11 | public class BreakBlockEvent extends Cancellable { 12 | private static final BreakBlockEvent INSTANCE = new BreakBlockEvent(); 13 | 14 | public BlockPos blockPos; 15 | 16 | public static BreakBlockEvent get(BlockPos blockPos) { 17 | INSTANCE.setCancelled(false); 18 | INSTANCE.blockPos = blockPos; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/PlayerMoveEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import net.minecraft.entity.MovementType; 9 | import net.minecraft.util.math.Vec3d; 10 | 11 | public class PlayerMoveEvent { 12 | private static final PlayerMoveEvent INSTANCE = new PlayerMoveEvent(); 13 | 14 | public MovementType type; 15 | public Vec3d movement; 16 | 17 | public static PlayerMoveEvent get(MovementType type, Vec3d movement) { 18 | INSTANCE.type = type; 19 | INSTANCE.movement = movement; 20 | return INSTANCE; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/render/TooltipDataEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.render; 7 | 8 | import net.minecraft.item.tooltip.TooltipData; 9 | import net.minecraft.item.ItemStack; 10 | 11 | 12 | public class TooltipDataEvent { 13 | private static final TooltipDataEvent INSTANCE = new TooltipDataEvent(); 14 | 15 | public TooltipData tooltipData; 16 | public ItemStack itemStack; 17 | 18 | public static TooltipDataEvent get(ItemStack itemStack) { 19 | INSTANCE.tooltipData = null; 20 | INSTANCE.itemStack = itemStack; 21 | return INSTANCE; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/render/HeldItemRendererEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.render; 7 | 8 | import net.minecraft.client.util.math.MatrixStack; 9 | import net.minecraft.util.Hand; 10 | 11 | public class HeldItemRendererEvent { 12 | private static final HeldItemRendererEvent INSTANCE = new HeldItemRendererEvent(); 13 | 14 | public Hand hand; 15 | public MatrixStack matrix; 16 | 17 | public static HeldItemRendererEvent get(Hand hand, MatrixStack matrices) { 18 | INSTANCE.hand = hand; 19 | INSTANCE.matrix = matrices; 20 | return INSTANCE; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/commands/arguments/DirectionArgumentType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.commands.arguments; 7 | 8 | import net.minecraft.command.argument.EnumArgumentType; 9 | import net.minecraft.util.math.Direction; 10 | 11 | public class DirectionArgumentType extends EnumArgumentType { 12 | private static final DirectionArgumentType INSTANCE = new DirectionArgumentType(); 13 | 14 | private DirectionArgumentType() { 15 | super(Direction.CODEC, Direction::values); 16 | } 17 | 18 | public static DirectionArgumentType create() { 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixininterface/IGpuDevice.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixininterface; 7 | 8 | import com.mojang.blaze3d.systems.RenderPass; 9 | 10 | public interface IGpuDevice { 11 | /** 12 | * Currently there can only be a single scissor pushed at once. 13 | */ 14 | void meteor$pushScissor(int x, int y, int width, int height); 15 | 16 | void meteor$popScissor(); 17 | 18 | /** 19 | * This is an *INTERNAL* method, it shouldn't be called. 20 | */ 21 | @Deprecated 22 | @SuppressWarnings("DeprecatedIsStillUsed") 23 | void meteor$onCreateRenderPass(RenderPass pass); 24 | } 25 | -------------------------------------------------------------------------------- /.github/workflows/issue-moderator.yml: -------------------------------------------------------------------------------- 1 | name: Issue Automatic Actions 2 | 3 | on: 4 | issues: 5 | types: [ opened ] 6 | 7 | jobs: 8 | issue-moderator: 9 | runs-on: ubuntu-latest 10 | 11 | permissions: 12 | issues: write 13 | contents: read 14 | 15 | steps: 16 | - name: Checkout Repository 17 | uses: actions/checkout@v4 18 | with: 19 | persist-credentials: false 20 | 21 | - name: Set Up Node.js 22 | uses: actions/setup-node@v4 23 | with: 24 | node-version: 22 25 | 26 | - name: Install Dependencies 27 | working-directory: .github/moderation 28 | run: npm ci 29 | 30 | - name: Check Banned Terms 31 | run: node .github/moderation/banned_terms.js 32 | env: 33 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 34 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/game/ChangePerspectiveEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.game; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.client.option.Perspective; 10 | 11 | public class ChangePerspectiveEvent extends Cancellable { 12 | private static final ChangePerspectiveEvent INSTANCE = new ChangePerspectiveEvent(); 13 | 14 | public Perspective perspective; 15 | 16 | public static ChangePerspectiveEvent get(Perspective perspective) { 17 | INSTANCE.setCancelled(false); 18 | INSTANCE.perspective = perspective; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorQuad.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.themes.meteor.widgets; 7 | 8 | import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; 9 | import meteordevelopment.meteorclient.gui.widgets.WQuad; 10 | import meteordevelopment.meteorclient.utils.render.color.Color; 11 | 12 | public class WMeteorQuad extends WQuad { 13 | public WMeteorQuad(Color color) { 14 | super(color); 15 | } 16 | 17 | @Override 18 | protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, double delta) { 19 | renderer.quad(x, y, width, height, color); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/renderer/text/BuiltinFontFace.java: -------------------------------------------------------------------------------- 1 | package meteordevelopment.meteorclient.renderer.text; 2 | 3 | import meteordevelopment.meteorclient.utils.render.FontUtils; 4 | 5 | import java.io.InputStream; 6 | 7 | public class BuiltinFontFace extends FontFace { 8 | private final String name; 9 | 10 | public BuiltinFontFace(FontInfo info, String name) { 11 | super(info); 12 | 13 | this.name = name; 14 | } 15 | 16 | @Override 17 | public InputStream toStream() { 18 | InputStream in = FontUtils.stream(name); 19 | if (in == null) throw new RuntimeException("Failed to load builtin font " + name + "."); 20 | return in; 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return super.toString() + " (builtin)"; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/world/ServerConnectBeginEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.world; 7 | 8 | import net.minecraft.client.network.ServerAddress; 9 | import net.minecraft.client.network.ServerInfo; 10 | 11 | public class ServerConnectBeginEvent { 12 | private static final ServerConnectBeginEvent INSTANCE = new ServerConnectBeginEvent(); 13 | public ServerAddress address; 14 | public ServerInfo info; 15 | 16 | public static ServerConnectBeginEvent get(ServerAddress address, ServerInfo info) { 17 | INSTANCE.address = address; 18 | INSTANCE.info = info; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/settings/IBlockData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.settings; 7 | 8 | import meteordevelopment.meteorclient.gui.GuiTheme; 9 | import meteordevelopment.meteorclient.gui.WidgetScreen; 10 | import meteordevelopment.meteorclient.utils.misc.IChangeable; 11 | import meteordevelopment.meteorclient.utils.misc.ICopyable; 12 | import meteordevelopment.meteorclient.utils.misc.ISerializable; 13 | import net.minecraft.block.Block; 14 | 15 | public interface IBlockData & ISerializable & IChangeable & IBlockData> { 16 | WidgetScreen createScreen(GuiTheme theme, Block block, BlockDataSetting setting); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WCheckbox.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.widgets.pressable; 7 | 8 | public abstract class WCheckbox extends WPressable { 9 | public boolean checked; 10 | 11 | public WCheckbox(boolean checked) { 12 | this.checked = checked; 13 | } 14 | 15 | @Override 16 | protected void onCalculateSize() { 17 | double pad = pad(); 18 | double s = theme.textHeight(); 19 | 20 | width = pad + s + pad; 21 | height = pad + s + pad; 22 | } 23 | 24 | @Override 25 | protected void onPressed(int button) { 26 | checked = !checked; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/notebot/instrumentdetect/InstrumentDetectFunction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.notebot.instrumentdetect; 7 | 8 | import net.minecraft.block.BlockState; 9 | import net.minecraft.block.enums.NoteBlockInstrument; 10 | import net.minecraft.util.math.BlockPos; 11 | 12 | public interface InstrumentDetectFunction { 13 | /** 14 | * Detects an instrument for noteblock 15 | * 16 | * @param noteBlock Noteblock state 17 | * @param blockPos Noteblock position 18 | * @return Detected instrument 19 | */ 20 | NoteBlockInstrument detectInstrument(BlockState noteBlock, BlockPos blockPos); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/pressable/WMeteorFavorite.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.themes.meteor.widgets.pressable; 7 | 8 | import meteordevelopment.meteorclient.gui.themes.meteor.MeteorWidget; 9 | import meteordevelopment.meteorclient.gui.widgets.pressable.WFavorite; 10 | import meteordevelopment.meteorclient.utils.render.color.Color; 11 | 12 | public class WMeteorFavorite extends WFavorite implements MeteorWidget { 13 | public WMeteorFavorite(boolean checked) { 14 | super(checked); 15 | } 16 | 17 | @Override 18 | protected Color getColor() { 19 | return theme().favoriteColor.get(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/MutableTextMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import meteordevelopment.meteorclient.mixininterface.IText; 9 | import net.minecraft.text.MutableText; 10 | import net.minecraft.util.Language; 11 | import org.jetbrains.annotations.Nullable; 12 | import org.spongepowered.asm.mixin.Mixin; 13 | import org.spongepowered.asm.mixin.Shadow; 14 | 15 | @Mixin(MutableText.class) 16 | public abstract class MutableTextMixin implements IText { 17 | @Shadow 18 | private @Nullable Language language; 19 | 20 | @Override 21 | public void meteor$invalidateCache() { 22 | this.language = null; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/world/BlockUpdateEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.world; 7 | 8 | import net.minecraft.block.BlockState; 9 | import net.minecraft.util.math.BlockPos; 10 | 11 | public class BlockUpdateEvent { 12 | private static final BlockUpdateEvent INSTANCE = new BlockUpdateEvent(); 13 | 14 | public BlockPos pos; 15 | public BlockState oldState, newState; 16 | 17 | public static BlockUpdateEvent get(BlockPos pos, BlockState oldState, BlockState newState) { 18 | INSTANCE.pos = pos; 19 | INSTANCE.oldState = oldState; 20 | INSTANCE.newState = newState; 21 | 22 | return INSTANCE; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/suggestion.yml: -------------------------------------------------------------------------------- 1 | name: Suggestion 2 | description: Suggest a new feature or change for Meteor. 3 | labels: [ enhancement ] 4 | body: 5 | - type: textarea 6 | id: description 7 | attributes: 8 | label: Describe the feature 9 | description: A clear and concise description of what the feature/change is. 10 | validations: 11 | required: true 12 | - type: checkboxes 13 | id: prerequisites 14 | attributes: 15 | label: Before submitting a suggestion 16 | options: 17 | - label: | 18 | This feature doesn't already exist in the client. (I have checked every module and their settings on the **latest dev build**) 19 | required: true 20 | - label: | 21 | This wasn't already suggested. (I have searched suggestions on GitHub and read the FAQ) 22 | required: true 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/PlayerMoveC2SPacketMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import meteordevelopment.meteorclient.mixininterface.IPlayerMoveC2SPacket; 9 | import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.Unique; 12 | 13 | @Mixin(PlayerMoveC2SPacket.class) 14 | public abstract class PlayerMoveC2SPacketMixin implements IPlayerMoveC2SPacket { 15 | @Unique private int tag; 16 | 17 | @Override 18 | public void meteor$setTag(int tag) { this.tag = tag; } 19 | 20 | @Override 21 | public int meteor$getTag() { return this.tag; } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/tabs/TabScreen.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.tabs; 7 | 8 | import meteordevelopment.meteorclient.gui.GuiTheme; 9 | import meteordevelopment.meteorclient.gui.WidgetScreen; 10 | import meteordevelopment.meteorclient.gui.utils.Cell; 11 | import meteordevelopment.meteorclient.gui.widgets.WWidget; 12 | 13 | public abstract class TabScreen extends WidgetScreen { 14 | public final Tab tab; 15 | 16 | public TabScreen(GuiTheme theme, Tab tab) { 17 | super(theme, tab.name); 18 | 19 | this.tab = tab; 20 | } 21 | 22 | public Cell addDirect(T widget) { 23 | return super.add(widget); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/SlotMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import meteordevelopment.meteorclient.mixininterface.ISlot; 9 | import net.minecraft.screen.slot.Slot; 10 | import org.spongepowered.asm.mixin.Final; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.Shadow; 13 | 14 | @Mixin(Slot.class) 15 | public abstract class SlotMixin implements ISlot { 16 | @Shadow public int id; 17 | @Shadow @Final private int index; 18 | 19 | @Override 20 | public int meteor$getId() { 21 | return id; 22 | } 23 | 24 | @Override 25 | public int meteor$getIndex() { 26 | return index; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorTooltip.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.themes.meteor.widgets; 7 | 8 | import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; 9 | import meteordevelopment.meteorclient.gui.themes.meteor.MeteorWidget; 10 | import meteordevelopment.meteorclient.gui.widgets.WTooltip; 11 | 12 | public class WMeteorTooltip extends WTooltip implements MeteorWidget { 13 | public WMeteorTooltip(String text) { 14 | super(text); 15 | } 16 | 17 | @Override 18 | protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, double delta) { 19 | renderer.quad(this, theme().backgroundColor.get()); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/misc/CursorStyle.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.misc; 7 | 8 | import org.lwjgl.glfw.GLFW; 9 | 10 | public enum CursorStyle { 11 | Default, 12 | Click, 13 | Type; 14 | 15 | private boolean created; 16 | private long cursor; 17 | 18 | public long getGlfwCursor() { 19 | if (!created) { 20 | switch (this) { 21 | case Click -> cursor = GLFW.glfwCreateStandardCursor(GLFW.GLFW_HAND_CURSOR); 22 | case Type -> cursor = GLFW.glfwCreateStandardCursor(GLFW.GLFW_IBEAM_CURSOR); 23 | } 24 | 25 | created = true; 26 | } 27 | 28 | return cursor; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /.github/builds/mc_version.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | import * as fs from "fs" 7 | import * as path from "path" 8 | import {fileURLToPath} from "url" 9 | 10 | const __dirname = path.dirname(fileURLToPath(import.meta.url)) 11 | 12 | export async function getMcVersion() { 13 | const filePath = path.resolve(__dirname, "../../gradle/libs.versions.toml") 14 | 15 | if (!fs.existsSync(filePath)) { 16 | throw new Error(`File not found: ${filePath}`) 17 | } 18 | 19 | const content = await fs.promises.readFile(filePath, "utf-8") 20 | 21 | const match = content.match(/^\s*minecraft\s*=\s*["']([^"']+)["']\s*$/m) 22 | if (match) return match[1].trim() 23 | 24 | throw new Error(`Failed to find minecraft version in ${filePath}`) 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorTopBar.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.themes.meteor.widgets; 7 | 8 | import meteordevelopment.meteorclient.gui.themes.meteor.MeteorWidget; 9 | import meteordevelopment.meteorclient.gui.widgets.WTopBar; 10 | import meteordevelopment.meteorclient.utils.render.color.Color; 11 | 12 | public class WMeteorTopBar extends WTopBar implements MeteorWidget { 13 | @Override 14 | protected Color getButtonColor(boolean pressed, boolean hovered) { 15 | return theme().backgroundColor.get(pressed, hovered); 16 | } 17 | 18 | @Override 19 | protected Color getNameColor() { 20 | return theme().textColor.get(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/notebot/decoder/SongDecoder.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.notebot.decoder; 7 | 8 | import meteordevelopment.meteorclient.systems.modules.Modules; 9 | import meteordevelopment.meteorclient.systems.modules.misc.Notebot; 10 | import meteordevelopment.meteorclient.utils.notebot.song.Song; 11 | 12 | import java.io.File; 13 | 14 | public abstract class SongDecoder { 15 | protected Notebot notebot = Modules.get().get(Notebot.class); 16 | 17 | /** 18 | * Parse file to a {@link Song} object 19 | * 20 | * @param file Song file 21 | * @return A {@link Song} object 22 | */ 23 | public abstract Song parse(File file) throws Exception; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractEntityEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.entity.Entity; 10 | import net.minecraft.util.Hand; 11 | 12 | public class InteractEntityEvent extends Cancellable { 13 | private static final InteractEntityEvent INSTANCE = new InteractEntityEvent(); 14 | 15 | public Entity entity; 16 | public Hand hand; 17 | 18 | public static InteractEntityEvent get(Entity entity, Hand hand) { 19 | INSTANCE.setCancelled(false); 20 | INSTANCE.entity = entity; 21 | INSTANCE.hand = hand; 22 | return INSTANCE; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/pressable/WMeteorTriangle.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.themes.meteor.widgets.pressable; 7 | 8 | import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; 9 | import meteordevelopment.meteorclient.gui.themes.meteor.MeteorWidget; 10 | import meteordevelopment.meteorclient.gui.widgets.pressable.WTriangle; 11 | 12 | public class WMeteorTriangle extends WTriangle implements MeteorWidget { 13 | @Override 14 | protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, double delta) { 15 | renderer.rotatedQuad(x, y, width, height, rotation, GuiRenderer.TRIANGLE, theme().backgroundColor.get(pressed, mouseOver)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/DoItemUseEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | 10 | /** 11 | * Some of our other injections coming from {@link net.minecraft.client.MinecraftClient#doItemUse()} 12 | * (e.g. InteractItemEvent) are called twice because the method loops over the Mainhand and the Offhand. This event is 13 | * only called once, before any interaction logic is called. 14 | */ 15 | public class DoItemUseEvent extends Cancellable { 16 | private static final DoItemUseEvent INSTANCE = new DoItemUseEvent(); 17 | 18 | public static DoItemUseEvent get() { 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/PlaceBlockEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.block.Block; 10 | import net.minecraft.util.math.BlockPos; 11 | 12 | public class PlaceBlockEvent extends Cancellable { 13 | private static final PlaceBlockEvent INSTANCE = new PlaceBlockEvent(); 14 | 15 | public BlockPos blockPos; 16 | public Block block; 17 | 18 | public static PlaceBlockEvent get(BlockPos blockPos, Block block) { 19 | INSTANCE.setCancelled(false); 20 | INSTANCE.blockPos = blockPos; 21 | INSTANCE.block = block; 22 | return INSTANCE; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/render/RenderBlockEntityEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.render; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.client.render.block.entity.state.BlockEntityRenderState; 10 | 11 | public class RenderBlockEntityEvent extends Cancellable { 12 | private static final RenderBlockEntityEvent INSTANCE = new RenderBlockEntityEvent(); 13 | 14 | public BlockEntityRenderState blockEntityState; 15 | 16 | public static RenderBlockEntityEvent get(BlockEntityRenderState blockEntityState) { 17 | INSTANCE.setCancelled(false); 18 | INSTANCE.blockEntityState = blockEntityState; 19 | return INSTANCE; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractBlockEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.util.Hand; 10 | import net.minecraft.util.hit.BlockHitResult; 11 | 12 | public class InteractBlockEvent extends Cancellable { 13 | private static final InteractBlockEvent INSTANCE = new InteractBlockEvent(); 14 | 15 | public Hand hand; 16 | public BlockHitResult result; 17 | 18 | public static InteractBlockEvent get(Hand hand, BlockHitResult result) { 19 | INSTANCE.setCancelled(false); 20 | INSTANCE.hand = hand; 21 | INSTANCE.result = result; 22 | return INSTANCE; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/ClipAtLedgeEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | public class ClipAtLedgeEvent { 9 | private static final ClipAtLedgeEvent INSTANCE = new ClipAtLedgeEvent(); 10 | 11 | private boolean set, clip; 12 | 13 | public void reset() { 14 | set = false; 15 | } 16 | 17 | public void setClip(boolean clip) { 18 | set = true; 19 | this.clip = clip; 20 | } 21 | 22 | public boolean isSet() { 23 | return set; 24 | } 25 | public boolean isClip() { 26 | return clip; 27 | } 28 | 29 | public static ClipAtLedgeEvent get() { 30 | INSTANCE.reset(); 31 | return INSTANCE; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiRenderOperation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.renderer; 7 | 8 | import meteordevelopment.meteorclient.utils.misc.Pool; 9 | import meteordevelopment.meteorclient.utils.render.color.Color; 10 | 11 | public abstract class GuiRenderOperation> { 12 | protected double x, y; 13 | protected Color color; 14 | 15 | public void set(double x, double y, Color color) { 16 | this.x = x; 17 | this.y = y; 18 | this.color = color; 19 | } 20 | 21 | @SuppressWarnings("unchecked") 22 | public void run(Pool pool) { 23 | onRun(); 24 | pool.free((T) this); 25 | } 26 | 27 | protected abstract void onRun(); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/RenderPipelineMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import com.mojang.blaze3d.pipeline.RenderPipeline; 9 | import meteordevelopment.meteorclient.mixininterface.IRenderPipeline; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.Unique; 12 | 13 | @Mixin(RenderPipeline.class) 14 | public abstract class RenderPipelineMixin implements IRenderPipeline { 15 | @Unique 16 | private boolean lineSmooth; 17 | 18 | @Override 19 | public void meteor$setLineSmooth(boolean lineSmooth) { 20 | this.lineSmooth = lineSmooth; 21 | } 22 | 23 | @Override 24 | public boolean meteor$getLineSmooth() { 25 | return lineSmooth; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorView.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.themes.meteor.widgets; 7 | 8 | import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; 9 | import meteordevelopment.meteorclient.gui.themes.meteor.MeteorWidget; 10 | import meteordevelopment.meteorclient.gui.widgets.containers.WView; 11 | 12 | public class WMeteorView extends WView implements MeteorWidget { 13 | @Override 14 | protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, double delta) { 15 | if (canScroll && hasScrollBar) { 16 | renderer.quad(handleX(), handleY(), handleWidth(), handleHeight(), theme().scrollbarColor.get(handlePressed, handleMouseOver)); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/tooltip/TextTooltipComponent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.tooltip; 7 | 8 | import net.minecraft.client.gui.tooltip.OrderedTextTooltipComponent; 9 | import net.minecraft.client.gui.tooltip.TooltipComponent; 10 | import net.minecraft.text.OrderedText; 11 | import net.minecraft.text.Text; 12 | 13 | public class TextTooltipComponent extends OrderedTextTooltipComponent implements MeteorTooltipData { 14 | public TextTooltipComponent(OrderedText text) { 15 | super(text); 16 | } 17 | 18 | public TextTooltipComponent(Text text) { 19 | this(text.asOrderedText()); 20 | } 21 | 22 | @Override 23 | public TooltipComponent getComponent() { 24 | return this; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerInteractionManagerAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.network.ClientPlayerInteractionManager; 9 | import net.minecraft.util.math.BlockPos; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | 13 | @Mixin(ClientPlayerInteractionManager.class) 14 | public interface ClientPlayerInteractionManagerAccessor { 15 | @Accessor("currentBreakingProgress") 16 | float meteor$getBreakingProgress(); 17 | 18 | @Accessor("currentBreakingProgress") 19 | void meteor$setCurrentBreakingProgress(float progress); 20 | 21 | @Accessor("currentBreakingPos") 22 | BlockPos meteor$getCurrentBreakingBlockPos(); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/CreativeSlotMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import meteordevelopment.meteorclient.mixininterface.ISlot; 9 | import net.minecraft.screen.slot.Slot; 10 | import org.spongepowered.asm.mixin.Final; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.Shadow; 13 | 14 | @Mixin(targets = "net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen$CreativeSlot") 15 | public abstract class CreativeSlotMixin implements ISlot { 16 | @Shadow @Final Slot slot; 17 | 18 | @Override 19 | public int meteor$getId() { 20 | return slot.id; 21 | } 22 | 23 | @Override 24 | public int meteor$getIndex() { 25 | return slot.getIndex(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/MobEntityMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import com.llamalad7.mixinextras.injector.ModifyReturnValue; 9 | import meteordevelopment.meteorclient.systems.modules.Modules; 10 | import meteordevelopment.meteorclient.systems.modules.movement.EntityControl; 11 | import net.minecraft.entity.mob.MobEntity; 12 | import org.spongepowered.asm.mixin.Mixin; 13 | import org.spongepowered.asm.mixin.injection.At; 14 | 15 | @Mixin(MobEntity.class) 16 | public abstract class MobEntityMixin { 17 | @ModifyReturnValue(method = "hasSaddleEquipped", at = @At("RETURN")) 18 | private boolean hasSaddleEquipped(boolean original) { 19 | return Modules.get().get(EntityControl.class).spoofSaddle() || original; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/network/OnlinePlayers.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.network; 7 | 8 | public class OnlinePlayers { 9 | private static long lastPingTime; 10 | 11 | private OnlinePlayers() { 12 | } 13 | 14 | public static void update() { 15 | long time = System.currentTimeMillis(); 16 | 17 | if (time - lastPingTime > 5 * 60 * 1000) { 18 | MeteorExecutor.execute(() -> Http.post("https://meteorclient.com/api/online/ping").ignoreExceptions().send()); 19 | 20 | lastPingTime = time; 21 | } 22 | } 23 | 24 | public static void leave() { 25 | MeteorExecutor.execute(() -> Http.post("https://meteorclient.com/api/online/leave").ignoreExceptions().send()); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ItemGroupsMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import com.llamalad7.mixinextras.injector.ModifyReturnValue; 9 | import meteordevelopment.meteorclient.systems.modules.Modules; 10 | import meteordevelopment.meteorclient.systems.modules.render.BetterTooltips; 11 | import net.minecraft.item.ItemGroups; 12 | import org.spongepowered.asm.mixin.Mixin; 13 | import org.spongepowered.asm.mixin.injection.At; 14 | 15 | @Mixin(ItemGroups.class) 16 | public abstract class ItemGroupsMixin { 17 | @ModifyReturnValue(method = "updateDisplayContext", at = @At("RETURN")) 18 | private static boolean modifyReturn(boolean original) { 19 | return original || Modules.get().get(BetterTooltips.class).updateTooltips(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/tabs/Tab.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.tabs; 7 | 8 | import meteordevelopment.meteorclient.gui.GuiTheme; 9 | import net.minecraft.client.gui.screen.Screen; 10 | 11 | import static meteordevelopment.meteorclient.MeteorClient.mc; 12 | 13 | public abstract class Tab { 14 | public final String name; 15 | 16 | public Tab(String name) { 17 | this.name = name; 18 | } 19 | 20 | public void openScreen(GuiTheme theme) { 21 | TabScreen screen = this.createScreen(theme); 22 | screen.addDirect(theme.topBar()).top().centerX(); 23 | mc.setScreen(screen); 24 | } 25 | 26 | public abstract TabScreen createScreen(GuiTheme theme); 27 | 28 | public abstract boolean isScreen(Screen screen); 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WConfirmedMinus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.widgets.pressable; 7 | 8 | import net.minecraft.client.gui.Click; 9 | 10 | public class WConfirmedMinus extends WMinus { 11 | protected boolean pressedOnce = false; 12 | 13 | @Override 14 | public boolean onMouseClicked(Click click, boolean doubled) { 15 | boolean pressed = super.onMouseClicked(click, doubled); 16 | if (!pressed) { 17 | pressedOnce = false; 18 | } 19 | return pressed; 20 | } 21 | 22 | @Override 23 | public boolean onMouseReleased(Click click) { 24 | if (pressed && pressedOnce) super.onMouseReleased(click); 25 | pressedOnce = pressed; 26 | return pressed = false; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/AbstractFurnaceScreenHandlerMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import meteordevelopment.meteorclient.mixininterface.IAbstractFurnaceScreenHandler; 9 | import net.minecraft.item.ItemStack; 10 | import net.minecraft.screen.AbstractFurnaceScreenHandler; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.Shadow; 13 | 14 | @Mixin(AbstractFurnaceScreenHandler.class) 15 | public abstract class AbstractFurnaceScreenHandlerMixin implements IAbstractFurnaceScreenHandler { 16 | @Shadow 17 | protected abstract boolean isSmeltable(ItemStack itemStack); 18 | 19 | @Override 20 | public boolean meteor$isItemSmeltable(ItemStack itemStack) { 21 | return isSmeltable(itemStack); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/entity/player/StartBreakingBlockEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.entity.player; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.util.math.BlockPos; 10 | import net.minecraft.util.math.Direction; 11 | 12 | public class StartBreakingBlockEvent extends Cancellable { 13 | private static final StartBreakingBlockEvent INSTANCE = new StartBreakingBlockEvent(); 14 | 15 | public BlockPos blockPos; 16 | public Direction direction; 17 | 18 | public static StartBreakingBlockEvent get(BlockPos blockPos, Direction direction) { 19 | INSTANCE.setCancelled(false); 20 | INSTANCE.blockPos = blockPos; 21 | INSTANCE.direction = direction; 22 | return INSTANCE; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ModulesTab.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.tabs.builtin; 7 | 8 | import meteordevelopment.meteorclient.gui.GuiTheme; 9 | import meteordevelopment.meteorclient.gui.GuiThemes; 10 | import meteordevelopment.meteorclient.gui.tabs.Tab; 11 | import meteordevelopment.meteorclient.gui.tabs.TabScreen; 12 | import net.minecraft.client.gui.screen.Screen; 13 | 14 | public class ModulesTab extends Tab { 15 | public ModulesTab() { 16 | super("Modules"); 17 | } 18 | 19 | @Override 20 | public TabScreen createScreen(GuiTheme theme) { 21 | return theme.modulesScreen(); 22 | } 23 | 24 | @Override 25 | public boolean isScreen(Screen screen) { 26 | return GuiThemes.get().isModulesScreen(screen); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/render/NoopOutlineVertexConsumerProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.render; 7 | 8 | import net.minecraft.client.render.OutlineVertexConsumerProvider; 9 | import net.minecraft.client.render.RenderLayer; 10 | import net.minecraft.client.render.VertexConsumer; 11 | 12 | public class NoopOutlineVertexConsumerProvider extends OutlineVertexConsumerProvider { 13 | public static final NoopOutlineVertexConsumerProvider INSTANCE = new NoopOutlineVertexConsumerProvider(); 14 | 15 | private NoopOutlineVertexConsumerProvider() { 16 | } 17 | 18 | @Override 19 | public VertexConsumer getBuffer(RenderLayer layer) { 20 | return NoopVertexConsumer.INSTANCE; 21 | } 22 | 23 | @Override 24 | public void draw() { 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/CapabilityTrackerMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import com.mojang.blaze3d.opengl.GlStateManager; 9 | import meteordevelopment.meteorclient.mixininterface.ICapabilityTracker; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.Shadow; 12 | 13 | @Mixin(GlStateManager.CapabilityTracker.class) 14 | public abstract class CapabilityTrackerMixin implements ICapabilityTracker { 15 | @Shadow 16 | private boolean state; 17 | 18 | @Shadow 19 | public abstract void setState(boolean state); 20 | 21 | @Override 22 | public boolean meteor$get() { 23 | return state; 24 | } 25 | 26 | @Override 27 | public void meteor$set(boolean state) { 28 | setState(state); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.entity.LivingEntity; 9 | import net.minecraft.fluid.Fluid; 10 | import net.minecraft.registry.tag.TagKey; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.gen.Accessor; 13 | import org.spongepowered.asm.mixin.gen.Invoker; 14 | 15 | @Mixin(LivingEntity.class) 16 | public interface LivingEntityAccessor { 17 | @Invoker("swimUpward") 18 | void meteor$swimUpwards(TagKey fluid); 19 | 20 | @Accessor("jumping") 21 | boolean meteor$isJumping(); 22 | 23 | @Accessor("jumpingCooldown") 24 | int meteor$getJumpCooldown(); 25 | 26 | @Accessor("jumpingCooldown") 27 | void meteor$setJumpCooldown(int cooldown); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/render/ApplyTransformationEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.render; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import net.minecraft.client.render.model.json.Transformation; 10 | 11 | public class ApplyTransformationEvent extends Cancellable { 12 | private static final ApplyTransformationEvent INSTANCE = new ApplyTransformationEvent(); 13 | 14 | public Transformation transformation; 15 | public boolean leftHanded; 16 | 17 | public static ApplyTransformationEvent get(Transformation transformation, boolean leftHanded) { 18 | INSTANCE.setCancelled(false); 19 | 20 | INSTANCE.transformation = transformation; 21 | INSTANCE.leftHanded = leftHanded; 22 | 23 | return INSTANCE; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/renderer/operations/TextOperation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.renderer.operations; 7 | 8 | import meteordevelopment.meteorclient.gui.renderer.GuiRenderOperation; 9 | import meteordevelopment.meteorclient.renderer.text.TextRenderer; 10 | 11 | public class TextOperation extends GuiRenderOperation { 12 | private String text; 13 | private TextRenderer renderer; 14 | 15 | public boolean title; 16 | 17 | public TextOperation set(String text, TextRenderer renderer, boolean title) { 18 | this.text = text; 19 | this.renderer = renderer; 20 | this.title = title; 21 | 22 | return this; 23 | } 24 | 25 | @Override 26 | protected void onRun() { 27 | renderer.render(text, x, y, color); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/HungerManagerMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import com.llamalad7.mixinextras.injector.ModifyExpressionValue; 9 | import meteordevelopment.meteorclient.systems.modules.Modules; 10 | import meteordevelopment.meteorclient.systems.modules.movement.NoSlow; 11 | import net.minecraft.entity.player.HungerManager; 12 | import org.spongepowered.asm.mixin.Mixin; 13 | import org.spongepowered.asm.mixin.injection.At; 14 | 15 | @Mixin(HungerManager.class) 16 | public class HungerManagerMixin { 17 | @ModifyExpressionValue(method = "canSprint()Z", at = @At(value = "CONSTANT", args = "floatValue=6.0f")) 18 | private float onHunger(float constant) { 19 | if (Modules.get().get(NoSlow.class).hunger()) return -1; 20 | return constant; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/YggdrasilMinecraftSessionServiceAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import com.mojang.authlib.Environment; 9 | import com.mojang.authlib.yggdrasil.ServicesKeySet; 10 | import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.gen.Invoker; 13 | 14 | import java.net.Proxy; 15 | 16 | @Mixin(YggdrasilMinecraftSessionService.class) 17 | public interface YggdrasilMinecraftSessionServiceAccessor { 18 | @Invoker("") 19 | static YggdrasilMinecraftSessionService meteor$createYggdrasilMinecraftSessionService(final ServicesKeySet servicesKeySet, final Proxy proxy, final Environment env) { 20 | throw new UnsupportedOperationException(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/pressable/WMeteorMinus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.themes.meteor.widgets.pressable; 7 | 8 | import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; 9 | import meteordevelopment.meteorclient.gui.themes.meteor.MeteorWidget; 10 | import meteordevelopment.meteorclient.gui.widgets.pressable.WMinus; 11 | 12 | public class WMeteorMinus extends WMinus implements MeteorWidget { 13 | @Override 14 | protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, double delta) { 15 | double pad = pad(); 16 | double s = theme.scale(3); 17 | 18 | renderBackground(renderer, this, pressed, mouseOver); 19 | renderer.quad(x + pad, y + height / 2 - s / 2, width - pad * 2, s, theme().minusColor.get()); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/SectionedEntityCacheAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import it.unimi.dsi.fastutil.longs.Long2ObjectMap; 9 | import it.unimi.dsi.fastutil.longs.LongSortedSet; 10 | import net.minecraft.world.entity.EntityLike; 11 | import net.minecraft.world.entity.EntityTrackingSection; 12 | import net.minecraft.world.entity.SectionedEntityCache; 13 | import org.spongepowered.asm.mixin.Mixin; 14 | import org.spongepowered.asm.mixin.gen.Accessor; 15 | 16 | @Mixin(SectionedEntityCache.class) 17 | public interface SectionedEntityCacheAccessor { 18 | @Accessor("trackedPositions") 19 | LongSortedSet meteor$getTrackedPositions(); 20 | 21 | @Accessor("trackingSections") 22 | Long2ObjectMap> meteor$getTrackingSections(); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorLabel.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.themes.meteor.widgets; 7 | 8 | import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; 9 | import meteordevelopment.meteorclient.gui.themes.meteor.MeteorWidget; 10 | import meteordevelopment.meteorclient.gui.widgets.WLabel; 11 | 12 | public class WMeteorLabel extends WLabel implements MeteorWidget { 13 | public WMeteorLabel(String text, boolean title) { 14 | super(text, title); 15 | } 16 | 17 | @Override 18 | protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, double delta) { 19 | if (!text.isEmpty()) { 20 | renderer.text(text, x, y, color != null ? color : (title ? theme().titleTextColor.get() : theme().textColor.get()), title); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ShaderLoaderMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import meteordevelopment.meteorclient.renderer.MeteorRenderPipelines; 9 | import net.minecraft.client.gl.ShaderLoader; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.injection.At; 12 | import org.spongepowered.asm.mixin.injection.Inject; 13 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 14 | 15 | @Mixin(ShaderLoader.class) 16 | public abstract class ShaderLoaderMixin { 17 | @Inject(method = "apply(Lnet/minecraft/client/gl/ShaderLoader$Definitions;Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)V", at = @At("TAIL")) 18 | private void meteor$reloadPipelines(CallbackInfo info) { 19 | MeteorRenderPipelines.precompile(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/resources/assets/meteor-client/shaders/blur_up.frag: -------------------------------------------------------------------------------- 1 | #version 330 core 2 | 3 | precision lowp float; 4 | 5 | in vec2 uv; 6 | out vec4 color; 7 | 8 | uniform sampler2D u_Texture; 9 | 10 | layout (std140) uniform BlurData { 11 | vec2 u_HalfTexelSize; 12 | float u_Offset; 13 | }; 14 | 15 | void main() { 16 | color = ( 17 | texture(u_Texture, uv + vec2(- u_HalfTexelSize.x * 2, 0) * u_Offset) + 18 | texture(u_Texture, uv + vec2(- u_HalfTexelSize.x, u_HalfTexelSize.y) * u_Offset) * 2 + 19 | texture(u_Texture, uv + vec2(0, u_HalfTexelSize.y * 2) * u_Offset) + 20 | texture(u_Texture, uv + u_HalfTexelSize * u_Offset) * 2 + 21 | texture(u_Texture, uv + vec2(u_HalfTexelSize.x * 2, 0) * u_Offset) + 22 | texture(u_Texture, uv + vec2(u_HalfTexelSize.x, -u_HalfTexelSize.y) * u_Offset) * 2 + 23 | texture(u_Texture, uv + vec2(0, -u_HalfTexelSize.y * 2) * u_Offset) + 24 | texture(u_Texture, uv - u_HalfTexelSize * u_Offset) * 2 25 | ) / 12; 26 | color.a = 1; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/RegistriesMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.registry.Registries; 9 | import org.spongepowered.asm.mixin.Mixin; 10 | import org.spongepowered.asm.mixin.injection.At; 11 | import org.spongepowered.asm.mixin.injection.Redirect; 12 | 13 | import java.util.function.Supplier; 14 | 15 | @Mixin(Registries.class) 16 | public abstract class RegistriesMixin { 17 | @Redirect(method = "create(Lnet/minecraft/registry/RegistryKey;Lnet/minecraft/registry/MutableRegistry;Lnet/minecraft/registry/Registries$Initializer;)Lnet/minecraft/registry/MutableRegistry;", at = @At(value = "INVOKE", target = "Lnet/minecraft/Bootstrap;ensureBootstrapped(Ljava/util/function/Supplier;)V")) 18 | private static void ignoreBootstrap(Supplier callerGetter) { 19 | // nothing 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/renderer/text/SystemFontFace.java: -------------------------------------------------------------------------------- 1 | package meteordevelopment.meteorclient.renderer.text; 2 | 3 | import meteordevelopment.meteorclient.utils.render.FontUtils; 4 | 5 | import java.io.InputStream; 6 | import java.nio.file.Path; 7 | 8 | public class SystemFontFace extends FontFace { 9 | private final Path path; 10 | 11 | public SystemFontFace(FontInfo info, Path path) { 12 | super(info); 13 | 14 | this.path = path; 15 | } 16 | 17 | @Override 18 | public InputStream toStream() { 19 | if (!path.toFile().exists()) { 20 | throw new RuntimeException("Tried to load font that no longer exists."); 21 | } 22 | 23 | InputStream in = FontUtils.stream(path.toFile()); 24 | if (in == null) throw new RuntimeException("Failed to load font from " + path + "."); 25 | return in; 26 | } 27 | 28 | @Override 29 | public String toString() { 30 | return super.toString() + " (" + path.toString() + ")"; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/settings/PotionSetting.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.settings; 7 | 8 | import meteordevelopment.meteorclient.utils.misc.MyPotion; 9 | 10 | import java.util.function.Consumer; 11 | 12 | public class PotionSetting extends EnumSetting { 13 | public PotionSetting(String name, String description, MyPotion defaultValue, Consumer onChanged, Consumer> onModuleActivated, IVisible visible) { 14 | super(name, description, defaultValue, onChanged, onModuleActivated, visible); 15 | } 16 | 17 | public static class Builder extends EnumSetting.Builder { 18 | @Override 19 | public EnumSetting build() { 20 | return new PotionSetting(name, description, defaultValue, onChanged, onModuleActivated, visible); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/other/JsonDateDeserializer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.other; 7 | 8 | import com.google.gson.JsonDeserializationContext; 9 | import com.google.gson.JsonDeserializer; 10 | import com.google.gson.JsonElement; 11 | import com.google.gson.JsonParseException; 12 | 13 | import java.lang.reflect.Type; 14 | import java.time.Instant; 15 | import java.util.Date; 16 | 17 | public class JsonDateDeserializer implements JsonDeserializer { 18 | @Override 19 | public Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { 20 | try { 21 | return Date.from(Instant.parse(jsonElement.getAsString())); 22 | } 23 | catch (Exception ignored) { 24 | return null; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/renderer/MeteorVertexFormatElements.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.renderer; 7 | 8 | import com.mojang.blaze3d.vertex.VertexFormatElement; 9 | 10 | public abstract class MeteorVertexFormatElements { 11 | public static final VertexFormatElement POS2 = VertexFormatElement.register(getNextVertexFormatElementId(), 0, VertexFormatElement.Type.FLOAT, VertexFormatElement.Usage.POSITION, 2); 12 | 13 | private MeteorVertexFormatElements() {} 14 | 15 | private static int getNextVertexFormatElementId() { 16 | int id = 0; 17 | 18 | while (VertexFormatElement.byId(id) != null) { 19 | id++; 20 | 21 | if (id >= 32) { 22 | throw new RuntimeException("Too many mods registering VertexFormatElements"); 23 | } 24 | } 25 | 26 | return id; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/tabs/WindowTabScreen.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.tabs; 7 | 8 | import meteordevelopment.meteorclient.gui.GuiTheme; 9 | import meteordevelopment.meteorclient.gui.utils.Cell; 10 | import meteordevelopment.meteorclient.gui.widgets.WWidget; 11 | import meteordevelopment.meteorclient.gui.widgets.containers.WWindow; 12 | 13 | public abstract class WindowTabScreen extends TabScreen { 14 | protected final WWindow window; 15 | 16 | public WindowTabScreen(GuiTheme theme, Tab tab) { 17 | super(theme, tab); 18 | 19 | window = super.add(theme.window(tab.name)).center().widget(); 20 | } 21 | 22 | @Override 23 | public Cell add(W widget) { 24 | return window.add(widget); 25 | } 26 | 27 | @Override 28 | public void clear() { 29 | window.clear(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingAccessor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import net.minecraft.client.option.KeyBinding; 9 | import net.minecraft.client.util.InputUtil; 10 | import org.spongepowered.asm.mixin.Mixin; 11 | import org.spongepowered.asm.mixin.gen.Accessor; 12 | import org.spongepowered.asm.mixin.gen.Invoker; 13 | 14 | import java.util.Map; 15 | 16 | @Mixin(KeyBinding.class) 17 | public interface KeyBindingAccessor { 18 | @Accessor("KEYS_BY_ID") 19 | static Map getKeysById() { return null; } 20 | 21 | @Accessor("boundKey") 22 | InputUtil.Key meteor$getKey(); 23 | 24 | @Accessor("timesPressed") 25 | int meteor$getTimesPressed(); 26 | 27 | @Accessor("timesPressed") 28 | void meteor$setTimesPressed(int timesPressed); 29 | 30 | @Invoker("reset") 31 | void meteor$invokeReset(); 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/ServerResourcePackLoaderMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import meteordevelopment.meteorclient.systems.modules.Modules; 9 | import meteordevelopment.meteorclient.systems.modules.misc.ServerSpoof; 10 | import net.minecraft.client.resource.server.ServerResourcePackLoader; 11 | import org.spongepowered.asm.mixin.Mixin; 12 | import org.spongepowered.asm.mixin.injection.At; 13 | import org.spongepowered.asm.mixin.injection.Inject; 14 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; 15 | 16 | @Mixin(ServerResourcePackLoader.class) 17 | public abstract class ServerResourcePackLoaderMixin { 18 | @Inject(method = "onReloadSuccess", at = @At("TAIL")) 19 | private void removeInactivePacksTail(CallbackInfo ci) { 20 | Modules.get().get(ServerSpoof.class).silentAcceptResourcePack = false; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/notebot/instrumentdetect/InstrumentDetectMode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.notebot.instrumentdetect; 7 | 8 | import net.minecraft.block.NoteBlock; 9 | import net.minecraft.client.MinecraftClient; 10 | 11 | public enum InstrumentDetectMode { 12 | BlockState(((noteBlock, blockPos) -> noteBlock.get(NoteBlock.INSTRUMENT))), 13 | BelowBlock(((noteBlock, blockPos) -> MinecraftClient.getInstance().world.getBlockState(blockPos.down()).getInstrument())); 14 | 15 | private final InstrumentDetectFunction instrumentDetectFunction; 16 | 17 | InstrumentDetectMode(InstrumentDetectFunction instrumentDetectFunction) { 18 | this.instrumentDetectFunction = instrumentDetectFunction; 19 | } 20 | 21 | public InstrumentDetectFunction getInstrumentDetectFunction() { 22 | return instrumentDetectFunction; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/world/CardinalDirection.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.world; 7 | 8 | import net.minecraft.util.math.Direction; 9 | 10 | public enum CardinalDirection { 11 | North, 12 | East, 13 | South, 14 | West; 15 | 16 | public Direction toDirection() { 17 | return switch (this) { 18 | case North -> Direction.NORTH; 19 | case East -> Direction.EAST; 20 | case South -> Direction.SOUTH; 21 | case West -> Direction.WEST; 22 | }; 23 | } 24 | 25 | public static CardinalDirection fromDirection(Direction direction) { 26 | return switch (direction) { 27 | case NORTH -> North; 28 | case SOUTH -> South; 29 | case WEST -> East; 30 | case EAST -> West; 31 | case DOWN, UP -> null; 32 | }; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/meteor/KeyEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.meteor; 7 | 8 | import meteordevelopment.meteorclient.events.Cancellable; 9 | import meteordevelopment.meteorclient.utils.misc.input.KeyAction; 10 | import net.minecraft.client.input.KeyInput; 11 | 12 | public class KeyEvent extends Cancellable { 13 | private static final KeyEvent INSTANCE = new KeyEvent(); 14 | 15 | public KeyInput input; 16 | public KeyAction action; 17 | 18 | public static KeyEvent get(KeyInput input, KeyAction action) { 19 | INSTANCE.setCancelled(false); 20 | INSTANCE.input = input; 21 | INSTANCE.action = action; 22 | return INSTANCE; 23 | } 24 | 25 | public int key() { 26 | return INSTANCE.input.key(); 27 | } 28 | 29 | public int modifiers() { 30 | return INSTANCE.input.modifiers(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/events/render/Render2DEvent.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.events.render; 7 | 8 | import meteordevelopment.meteorclient.utils.Utils; 9 | import net.minecraft.client.gui.DrawContext; 10 | 11 | public class Render2DEvent { 12 | private static final Render2DEvent INSTANCE = new Render2DEvent(); 13 | 14 | public DrawContext drawContext; 15 | public int screenWidth, screenHeight; 16 | public double frameTime; 17 | public float tickDelta; 18 | 19 | public static Render2DEvent get(DrawContext drawContext, int screenWidth, int screenHeight, float tickDelta) { 20 | INSTANCE.drawContext = drawContext; 21 | INSTANCE.screenWidth = screenWidth; 22 | INSTANCE.screenHeight = screenHeight; 23 | INSTANCE.frameTime = Utils.frameTime; 24 | INSTANCE.tickDelta = tickDelta; 25 | return INSTANCE; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/commands/commands/GamemodeCommand.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.commands.commands; 7 | 8 | import com.mojang.brigadier.builder.LiteralArgumentBuilder; 9 | import meteordevelopment.meteorclient.commands.Command; 10 | import net.minecraft.command.CommandSource; 11 | import net.minecraft.world.GameMode; 12 | 13 | public class GamemodeCommand extends Command { 14 | public GamemodeCommand() { 15 | super("gamemode", "Changes your gamemode client-side.", "gm"); 16 | } 17 | 18 | @Override 19 | public void build(LiteralArgumentBuilder builder) { 20 | for (GameMode gameMode : GameMode.values()) { 21 | builder.then(literal(gameMode.getId()).executes(context -> { 22 | mc.interactionManager.setGameMode(gameMode); 23 | return SINGLE_SUCCESS; 24 | })); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignBlockEntityRendererMixin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.mixin; 7 | 8 | import com.llamalad7.mixinextras.injector.ModifyExpressionValue; 9 | import meteordevelopment.meteorclient.systems.modules.Modules; 10 | import meteordevelopment.meteorclient.systems.modules.render.NoRender; 11 | import net.minecraft.client.render.block.entity.AbstractSignBlockEntityRenderer; 12 | import org.spongepowered.asm.mixin.Mixin; 13 | import org.spongepowered.asm.mixin.injection.At; 14 | 15 | @Mixin(AbstractSignBlockEntityRenderer.class) 16 | public abstract class AbstractSignBlockEntityRendererMixin { 17 | @ModifyExpressionValue(method = "renderText", at = @At(value = "CONSTANT", args = {"intValue=4", "ordinal=1"})) 18 | private int loopTextLengthProxy(int i) { 19 | if (Modules.get().get(NoRender.class).noSignText()) return 0; 20 | return i; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/utils/render/NoopImmediateVertexConsumerProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.utils.render; 7 | 8 | import net.minecraft.client.render.RenderLayer; 9 | import net.minecraft.client.render.VertexConsumer; 10 | import net.minecraft.client.render.VertexConsumerProvider; 11 | 12 | public class NoopImmediateVertexConsumerProvider extends VertexConsumerProvider.Immediate { 13 | public static final NoopImmediateVertexConsumerProvider INSTANCE = new NoopImmediateVertexConsumerProvider(); 14 | 15 | private NoopImmediateVertexConsumerProvider() { 16 | super(null, null); 17 | } 18 | 19 | @Override 20 | public VertexConsumer getBuffer(RenderLayer layer) { 21 | return NoopVertexConsumer.INSTANCE; 22 | } 23 | 24 | @Override 25 | public void draw() { 26 | } 27 | 28 | @Override 29 | public void draw(RenderLayer layer) { 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorAccount.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). 3 | * Copyright (c) Meteor Development. 4 | */ 5 | 6 | package meteordevelopment.meteorclient.gui.themes.meteor.widgets; 7 | 8 | import meteordevelopment.meteorclient.gui.WidgetScreen; 9 | import meteordevelopment.meteorclient.gui.themes.meteor.MeteorWidget; 10 | import meteordevelopment.meteorclient.gui.widgets.WAccount; 11 | import meteordevelopment.meteorclient.systems.accounts.Account; 12 | import meteordevelopment.meteorclient.utils.render.color.Color; 13 | 14 | public class WMeteorAccount extends WAccount implements MeteorWidget { 15 | public WMeteorAccount(WidgetScreen screen, Account account) { 16 | super(screen, account); 17 | } 18 | 19 | @Override 20 | protected Color loggedInColor() { 21 | return theme().loggedInColor.get(); 22 | } 23 | 24 | @Override 25 | protected Color accountTypeColor() { 26 | return theme().textSecondaryColor.get(); 27 | } 28 | } 29 | --------------------------------------------------------------------------------