From 0d8063058b20eb8d8010993efb498a9621fa4c7a Mon Sep 17 00:00:00 2001 From: Big-Iron-Cheems <52252627+Big-Iron-Cheems@users.noreply.github.com> Date: Tue, 31 Mar 2026 22:36:46 +0200 Subject: [PATCH 01/37] refactor: remap to Mojang mappings using Ravel Broken code is to be expected, check classes containing `TODO(Ravel)` in them. --- build.gradle.kts | 2 +- gradle/libs.versions.toml | 8 +- .../meteorclient/MeteorClient.java | 10 +- .../meteorclient/commands/Command.java | 30 +- .../meteorclient/commands/Commands.java | 12 +- .../arguments/BlockPosArgumentType.java | 75 +-- .../arguments/CommandArgumentType.java | 8 +- .../arguments/ComponentMapArgumentType.java | 18 +- .../arguments/CompoundNbtTagArgumentType.java | 30 +- .../arguments/DirectionArgumentType.java | 6 +- .../commands/arguments/MacroArgumentType.java | 11 +- .../arguments/ModuleArgumentType.java | 19 +- .../arguments/NotebotSongArgumentType.java | 7 +- .../arguments/PlayerArgumentType.java | 25 +- .../PlayerListEntryArgumentType.java | 25 +- .../arguments/ProfileArgumentType.java | 7 +- .../RegistryEntryReferenceArgumentType.java | 84 ++-- .../arguments/SettingArgumentType.java | 11 +- .../arguments/SettingValueArgumentType.java | 11 +- .../arguments/WaypointArgumentType.java | 8 +- .../commands/commands/BindCommand.java | 4 +- .../commands/commands/BindsCommand.java | 28 +- .../commands/commands/CommandsCommand.java | 32 +- .../commands/commands/DamageCommand.java | 18 +- .../commands/commands/DisconnectCommand.java | 14 +- .../commands/commands/DismountCommand.java | 10 +- .../commands/commands/DropCommand.java | 32 +- .../commands/commands/EnchantCommand.java | 28 +- .../commands/commands/EnderChestCommand.java | 8 +- .../commands/commands/FakePlayerCommand.java | 4 +- .../commands/commands/FovCommand.java | 4 +- .../commands/commands/FriendsCommand.java | 16 +- .../commands/commands/GamemodeCommand.java | 8 +- .../commands/commands/GiveCommand.java | 22 +- .../commands/commands/HClipCommand.java | 10 +- .../commands/commands/HelpCommand.java | 38 +- .../commands/commands/InputCommand.java | 30 +- .../commands/commands/InventoryCommand.java | 6 +- .../commands/commands/LocateCommand.java | 120 ++--- .../commands/commands/MacroCommand.java | 10 +- .../commands/commands/ModulesCommand.java | 31 +- .../commands/commands/NameHistoryCommand.java | 24 +- .../commands/commands/NbtCommand.java | 72 +-- .../commands/commands/NotebotCommand.java | 22 +- .../commands/commands/PeekCommand.java | 16 +- .../commands/commands/ProfilesCommand.java | 4 +- .../commands/commands/ReloadCommand.java | 4 +- .../commands/commands/ResetCommand.java | 4 +- .../commands/commands/RotationCommand.java | 10 +- .../commands/commands/SaveMapCommand.java | 31 +- .../commands/commands/SayCommand.java | 27 +- .../commands/commands/ServerCommand.java | 100 ++-- .../commands/commands/SettingCommand.java | 48 +- .../commands/commands/SpectateCommand.java | 8 +- .../commands/commands/SwarmCommand.java | 431 +++++++++--------- .../commands/commands/ToggleCommand.java | 4 +- .../commands/commands/VClipCommand.java | 16 +- .../commands/commands/WaspCommand.java | 12 +- .../commands/commands/WaypointCommand.java | 20 +- .../events/entity/BoatMoveEvent.java | 6 +- .../events/entity/DropItemsEvent.java | 2 +- .../events/entity/EntityAddedEvent.java | 2 +- .../events/entity/EntityDestroyEvent.java | 2 +- .../events/entity/EntityMoveEvent.java | 8 +- .../events/entity/EntityRemovedEvent.java | 2 +- .../entity/player/AttackEntityEvent.java | 2 +- .../events/entity/player/BreakBlockEvent.java | 2 +- .../entity/player/CanWalkOnFluidEvent.java | 6 +- .../entity/player/FinishUsingItemEvent.java | 2 +- .../entity/player/InteractBlockEvent.java | 8 +- .../entity/player/InteractEntityEvent.java | 8 +- .../entity/player/InteractItemEvent.java | 10 +- .../player/ItemUseCrosshairTargetEvent.java | 2 +- .../events/entity/player/PickItemsEvent.java | 2 +- .../events/entity/player/PlaceBlockEvent.java | 4 +- .../events/entity/player/PlayerMoveEvent.java | 10 +- .../player/StartBreakingBlockEvent.java | 4 +- .../entity/player/StoppedUsingItemEvent.java | 2 +- .../events/game/ChangePerspectiveEvent.java | 6 +- .../events/game/ItemStackTooltipEvent.java | 18 +- .../events/game/OpenScreenEvent.java | 2 +- .../events/game/ReceiveMessageEvent.java | 18 +- .../meteorclient/events/meteor/KeyEvent.java | 6 +- .../events/meteor/MouseClickEvent.java | 10 +- .../packets/ContainerSlotUpdateEvent.java | 6 +- .../events/packets/InventoryEvent.java | 6 +- .../events/packets/PacketEvent.java | 16 +- .../events/packets/PlaySoundPacketEvent.java | 6 +- .../render/ApplyTransformationEvent.java | 6 +- .../events/render/ArmRenderEvent.java | 10 +- .../events/render/HeldItemRendererEvent.java | 10 +- .../events/render/Render2DEvent.java | 6 +- .../events/render/Render3DEvent.java | 6 +- .../events/render/RenderBlockEntityEvent.java | 2 +- .../events/render/RenderBossBarEvent.java | 14 +- .../events/render/RenderItemEntityEvent.java | 22 +- .../events/render/TooltipDataEvent.java | 6 +- .../events/world/BlockActivateEvent.java | 2 +- .../events/world/BlockUpdateEvent.java | 4 +- .../events/world/ChunkDataEvent.java | 7 +- .../events/world/CollisionShapeEvent.java | 6 +- .../events/world/ParticleEvent.java | 6 +- .../events/world/PlaySoundEvent.java | 2 +- .../events/world/ServerConnectBeginEvent.java | 8 +- .../gui/DefaultSettingsWidgetFactory.java | 2 +- .../meteorclient/gui/GuiTheme.java | 49 +- .../meteorclient/gui/GuiThemes.java | 12 +- .../meteorclient/gui/WidgetScreen.java | 47 +- .../gui/renderer/GuiDebugRenderer.java | 8 +- .../gui/renderer/GuiRenderer.java | 28 +- .../gui/renderer/packer/TexturePacker.java | 2 +- .../gui/screens/ContainerInventoryScreen.java | 36 +- .../screens/EditBookTitleAndAuthorScreen.java | 32 +- .../gui/screens/ModuleScreen.java | 10 +- .../gui/screens/ModulesScreen.java | 16 +- .../settings/BlockDataSettingScreen.java | 14 +- .../settings/BlockListSettingScreen.java | 18 +- .../screens/settings/BlockSettingScreen.java | 10 +- .../screens/settings/ColorSettingScreen.java | 30 +- .../EnchantmentListSettingScreen.java | 14 +- .../settings/EntityTypeListSettingScreen.java | 29 +- .../settings/ItemListSettingScreen.java | 10 +- .../screens/settings/ItemSettingScreen.java | 8 +- .../settings/PacketBoolSettingScreen.java | 2 +- .../ParticleTypeListSettingScreen.java | 12 +- .../screens/settings/PotionSettingScreen.java | 2 +- .../settings/ScreenHandlerSettingScreen.java | 18 +- .../settings/SoundEventListSettingScreen.java | 8 +- ...StatusEffectAmplifierMapSettingScreen.java | 26 +- .../StatusEffectListSettingScreen.java | 32 +- .../StorageBlockListSettingScreen.java | 13 +- .../DynamicRegistryListSettingScreen.java | 11 +- .../screens/settings/base/SortingHelper.java | 10 +- .../meteorclient/gui/tabs/Tab.java | 2 +- .../gui/tabs/builtin/ConfigTab.java | 8 +- .../gui/tabs/builtin/FriendsTab.java | 2 +- .../meteorclient/gui/tabs/builtin/GuiTab.java | 2 +- .../meteorclient/gui/tabs/builtin/HudTab.java | 6 +- .../gui/tabs/builtin/MacrosTab.java | 2 +- .../gui/tabs/builtin/ModulesTab.java | 2 +- .../gui/tabs/builtin/PathManagerTab.java | 2 +- .../gui/tabs/builtin/ProfilesTab.java | 18 +- .../gui/themes/meteor/MeteorGuiTheme.java | 55 +-- .../themes/meteor/widgets/WMeteorModule.java | 9 +- .../meteor/widgets/input/WMeteorTextBox.java | 10 +- .../widgets/pressable/WMeteorCheckbox.java | 4 +- .../meteorclient/gui/utils/WindowConfig.java | 8 +- .../meteorclient/gui/widgets/WItem.java | 2 +- .../gui/widgets/WItemWithLabel.java | 16 +- .../meteorclient/gui/widgets/WLabel.java | 6 +- .../meteorclient/gui/widgets/WTopBar.java | 2 +- .../meteorclient/gui/widgets/WWidget.java | 59 ++- .../gui/widgets/containers/WContainer.java | 41 +- .../gui/widgets/containers/WSection.java | 11 +- .../gui/widgets/containers/WView.java | 22 +- .../gui/widgets/containers/WWindow.java | 10 +- .../gui/widgets/input/WBlockPosEdit.java | 18 +- .../gui/widgets/input/WDropdown.java | 23 +- .../gui/widgets/input/WSlider.java | 101 ++-- .../gui/widgets/input/WTextBox.java | 137 +++--- .../widgets/pressable/WConfirmedButton.java | 6 +- .../widgets/pressable/WConfirmedMinus.java | 6 +- .../gui/widgets/pressable/WPressable.java | 12 +- .../mixin/AbstractBlockStateMixin.java | 14 +- ...ntityMixin.java => AbstractBoatMixin.java} | 16 +- .../mixin/AbstractClientPlayerAccessor.java | 17 + .../AbstractClientPlayerEntityAccessor.java | 17 - ...in.java => AbstractClientPlayerMixin.java} | 12 +- .../AbstractContainerScreenAccessor.java | 17 + ...java => AbstractContainerScreenMixin.java} | 82 ++-- .../AbstractFurnaceScreenHandlerMixin.java | 8 +- .../mixin/AbstractFurnaceScreenMixin.java | 16 +- ...> AbstractMountInventoryMenuAccessor.java} | 8 +- .../mixin/AbstractSignEditScreenAccessor.java | 6 +- ...in.java => AbstractSignRendererMixin.java} | 8 +- .../mixin/ArmorFeatureRendererMixin.java | 27 -- ...ixin.java => ArmorStandRendererMixin.java} | 10 +- ...ponentMixin.java => AttackRangeMixin.java} | 14 +- .../mixin/AvatarRendererMixin.java | 101 ++++ .../mixin/BannerBlockEntityRendererMixin.java | 81 ---- .../mixin/BannerRendererMixin.java | 81 ++++ .../mixin/BeaconBlockEntityRendererMixin.java | 29 -- .../mixin/BeaconRendererMixin.java | 29 ++ .../meteorclient/mixin/BeaconScreenMixin.java | 46 +- .../meteorclient/mixin/BiomeColorsMixin.java | 18 +- ...essor.java => BlockBehaviourAccessor.java} | 10 +- ...ockMixin.java => BlockBehaviourMixin.java} | 18 +- .../mixin/BlockCollisionSpliteratorMixin.java | 41 -- .../mixin/BlockCollisionsMixin.java | 41 ++ .../meteorclient/mixin/BlockColorsMixin.java | 10 +- ... BlockEntityRenderDispatcherAccessor.java} | 12 +- ... => BlockEntityRenderDispatcherMixin.java} | 18 +- .../mixin/BlockHitResultAccessor.java | 8 +- .../meteorclient/mixin/BlockItemMixin.java | 18 +- .../meteorclient/mixin/BlockMixin.java | 18 +- ...n.java => BlockRenderDispatcherMixin.java} | 23 +- .../meteorclient/mixin/BlockStateMixin.java | 22 +- .../mixin/BookEditScreenMixin.java | 119 ++--- .../meteorclient/mixin/BookScreenMixin.java | 108 ----- .../mixin/BookViewScreenMixin.java | 109 +++++ ...Mixin.java => BossHealthOverlayMixin.java} | 16 +- .../meteorclient/mixin/BoxMixin.java | 46 +- .../mixin/BrewingStandScreenMixin.java | 14 +- .../mixin/BrightnessGetterMixin.java | 14 +- ...Mixin.java => BuiltInRegistriesMixin.java} | 8 +- .../meteorclient/mixin/BundleItemMixin.java | 8 +- ...ixin.java => BundleMouseActionsMixin.java} | 22 +- ...dOrthoProjectionMatrixBufferAccessor.java} | 10 +- .../meteorclient/mixin/CameraMixin.java | 62 ++- .../mixin/CapabilityTrackerMixin.java | 10 +- .../mixin/CapeFeatureRendererMixin.java | 32 -- .../meteorclient/mixin/CapeLayerMixin.java | 32 ++ .../mixin/ChatComponentAccessor.java | 22 + .../meteorclient/mixin/ChatHudAccessor.java | 22 - .../mixin/ChatHudInteractableMixin.java | 24 +- .../mixin/ChatHudLineConsumerMixin.java | 12 +- .../meteorclient/mixin/ChatHudLineMixin.java | 18 +- .../mixin/ChatHudLineVisibleMixin.java | 19 +- .../meteorclient/mixin/ChatHudMixin.java | 68 ++- .../mixin/ChatHudUnfocusedMixin.java | 26 +- .../meteorclient/mixin/ChatScreenMixin.java | 9 +- ...Accessor.java => ChunkAccessAccessor.java} | 10 +- .../mixin/ChunkBorderDebugRendererMixin.java | 39 -- .../mixin/ChunkBorderRendererMixin.java | 39 ++ .../mixin/ClientChunkCacheAccessor.java | 16 + .../mixin/ClientChunkMapAccessor.java | 8 +- ...tWorldMixin.java => ClientLevelMixin.java} | 27 +- .../mixin/ClientPacketListenerAccessor.java | 39 ++ .../ClientPlayNetworkHandlerAccessor.java | 39 -- .../mixin/ClientPlayNetworkHandlerMixin.java | 55 +-- .../mixin/ClientPlayerEntityMixin.java | 68 +-- ...lientPlayerInteractionManagerAccessor.java | 23 - .../ClientPlayerInteractionManagerMixin.java | 113 +++-- ...ntboundSetEntityMotionPacketAccessor.java} | 12 +- ...ixin.java => CommandSuggestionsMixin.java} | 42 +- ...Mixin.java => CompassAngleStateMixin.java} | 22 +- .../mixin/ConnectScreenMixin.java | 14 +- ...nAccessor.java => ConnectionAccessor.java} | 6 +- ...nectionMixin.java => ConnectionMixin.java} | 74 +-- .../mixin/ContainerComponentAccessor.java | 18 - .../meteorclient/mixin/CrashReportMixin.java | 18 +- ... CreativeModeInventoryScreenAccessor.java} | 10 +- ...sor.java => CreativeModeTabsAccessor.java} | 12 +- ...sMixin.java => CreativeModeTabsMixin.java} | 8 +- .../meteorclient/mixin/CreativeSlotMixin.java | 12 +- .../mixin/CrossbowItemAccessor.java | 10 +- .../mixin/CustomHeadLayerMixin.java | 29 ++ .../meteorclient/mixin/DirectionAccessor.java | 4 +- .../mixin/DisconnectedScreenMixin.java | 40 +- ...aderMixin.java => DownloadQueueMixin.java} | 12 +- ...in.java => DownloadedPackSourceMixin.java} | 6 +- .../meteorclient/mixin/DrawContextMixin.java | 40 -- .../mixin/ElytraFeatureRendererMixin.java | 38 -- .../mixin/EnchantTableRendererMixin.java | 27 ++ ...chantingTableBlockEntityRendererMixin.java | 27 -- .../mixin/EndCrystalEntityRendererMixin.java | 87 ---- ...elMixin.java => EndCrystalModelMixin.java} | 18 +- .../mixin/EndCrystalRendererMixin.java | 87 ++++ .../meteorclient/mixin/EntityAccessor.java | 4 +- .../mixin/EntityHitboxDebugRendererMixin.java | 10 +- .../meteorclient/mixin/EntityMixin.java | 91 ++-- .../mixin/EntityRenderManagerMixin.java | 38 +- .../mixin/EntityRenderStateMixin.java | 6 +- .../mixin/EntityRendererMixin.java | 54 +-- ...cessor.java => EntitySectionAccessor.java} | 11 +- .../mixin/EntitySectionStorageAccessor.java | 23 + .../mixin/EntityTrackingSectionAccessor.java | 17 - .../mixin/ExplosionS2CPacketMixin.java | 16 +- .../meteorclient/mixin/FileCacheAccessor.java | 8 +- .../mixin/FireworkRocketEntityMixin.java | 10 +- .../mixin/FireworksSparkParticleMixin.java | 8 +- .../mixin/FireworksSparkParticleSubMixin.java | 10 +- ...Accessor.java => FishingHookAccessor.java} | 8 +- ...EntityMixin.java => FishingHookMixin.java} | 12 +- .../meteorclient/mixin/FogRendererMixin.java | 6 +- ...{TextRendererMixin.java => FontMixin.java} | 8 +- ...erManagerMixin.java => FoodDataMixin.java} | 8 +- ...ufMixin.java => FriendlyByteBufMixin.java} | 14 +- .../meteorclient/mixin/GameRendererMixin.java | 100 ++-- .../mixin/GlCommandEncoderMixin.java | 14 +- ...GlBackendMixin.java => GlDeviceMixin.java} | 6 +- ...Accessor.java => GuiGraphicsAccessor.java} | 12 +- .../meteorclient/mixin/GuiGraphicsMixin.java | 40 ++ .../{InGameHudMixin.java => GuiMixin.java} | 65 +-- .../mixin/HandledScreenAccessor.java | 17 - .../mixin/HeadFeatureRendererMixin.java | 28 -- .../mixin/HeldItemRendererMixin.java | 99 ---- .../mixin/HumanoidArmorLayerMixin.java | 28 ++ .../mixin/InGameOverlayRendererMixin.java | 36 -- ...in.java => ItemBlockRenderTypesMixin.java} | 30 +- .../mixin/ItemContainerContentsAccessor.java | 18 + ...n.java => ItemContainerContentsMixin.java} | 24 +- .../mixin/ItemEntityRendererMixin.java | 20 +- .../mixin/ItemInHandRendererMixin.java | 99 ++++ .../meteorclient/mixin/ItemMixin.java | 10 +- .../meteorclient/mixin/ItemRendererMixin.java | 10 +- .../meteorclient/mixin/ItemStackMixin.java | 20 +- ...java => ItemStackRenderStateAccessor.java} | 12 +- ...tionMixin.java => ItemTransformMixin.java} | 12 +- ...n.java => JoinMultiplayerScreenMixin.java} | 32 +- .../mixin/KeyBindingAccessor.java | 32 -- .../mixin/KeyMappingAccessor.java | 34 ++ ...rdMixin.java => KeyboardHandlerMixin.java} | 33 +- .../mixin/KeyboardInputMixin.java | 27 +- .../mixin/LayerRenderStateAccessor.java | 8 +- ...{WorldAccessor.java => LevelAccessor.java} | 14 +- ...ldChunkMixin.java => LevelChunkMixin.java} | 18 +- .../LevelEntityGetterAdapterAccessor.java | 18 + ...cessor.java => LevelRendererAccessor.java} | 12 +- ...nagerMixin.java => LightTextureMixin.java} | 28 +- ...n.java => LightningBoltRendererMixin.java} | 18 +- ...xin.java => LiquidBlockRendererMixin.java} | 31 +- .../mixin/LivingEntityAccessor.java | 12 +- .../meteorclient/mixin/LivingEntityMixin.java | 52 +-- .../mixin/LivingEntityRendererMixin.java | 57 +-- ...Accessor.java => LocalPlayerAccessor.java} | 10 +- .../meteorclient/mixin/MapRendererMixin.java | 16 +- .../mixin/MapTextureManagerAccessor.java | 10 +- .../mixin/MessageHandlerMixin.java | 22 +- .../meteorclient/mixin/MinecraftAccessor.java | 78 ++++ .../mixin/MinecraftClientAccessor.java | 78 ---- .../mixin/MinecraftClientMixin.java | 194 +++++--- .../mixin/MinecraftServerAccessor.java | 6 +- ...cessor.java => MobBucketItemAccessor.java} | 11 +- ...java => MobEffectFogEnvironmentMixin.java} | 18 +- ...or.java => MobEffectInstanceAccessor.java} | 6 +- ...Mixin.java => MobEffectInstanceMixin.java} | 10 +- .../{MobEntityMixin.java => MobMixin.java} | 8 +- ...ixin.java => ModelBlockRendererMixin.java} | 30 +- ...MouseMixin.java => MouseHandlerMixin.java} | 28 +- .../mixin/MultiPlayerGameModeAccessor.java | 23 + ...tMixin.java => MutableComponentMixin.java} | 12 +- ...ameOptionsMixin.java => OptionsMixin.java} | 27 +- .../mixin/ParticleEngineMixin.java | 37 ++ .../mixin/ParticleManagerMixin.java | 36 -- ...ntityAccessor.java => PlayerAccessor.java} | 12 +- .../mixin/PlayerEntityRendererMixin.java | 101 ---- ...stEntryMixin.java => PlayerInfoMixin.java} | 20 +- .../PlayerInteractEntityC2SPacketMixin.java | 20 +- ...layerEntityMixin.java => PlayerMixin.java} | 51 ++- .../mixin/PlayerMoveC2SPacketMixin.java | 15 +- .../mixin/PlayerSkinProviderAccessor.java | 16 - ...dMixin.java => PlayerTabOverlayMixin.java} | 42 +- .../mixin/PowderSnowBlockMixin.java | 6 +- .../mixin/ProjectileInGroundAccessor.java | 4 +- .../mixin/ProjectileUtilMixin.java | 12 +- .../mixin/RaycastContextMixin.java | 49 +- .../mixin/ReloadStateAccessor.java | 4 +- .../mixin/RenderLayerAccessor.java | 17 - .../meteorclient/mixin/RenderSystemMixin.java | 3 +- .../mixin/RenderTickCounterDynamicMixin.java | 10 +- ...mAccessor.java => RenderTypeAccessor.java} | 12 +- ... => ResourceLoadStateTrackerAccessor.java} | 8 +- .../mixin/ScreenEffectRendererMixin.java | 36 ++ .../meteorclient/mixin/ScreenMixin.java | 21 +- .../mixin/SectionedEntityCacheAccessor.java | 23 - ...ntityMixin.java => ServerPlayerMixin.java} | 14 +- ... ServerboundMovePlayerPacketAccessor.java} | 6 +- ...aderMixin.java => ShaderManagerMixin.java} | 8 +- ...n.java => ShadowFeatureRendererMixin.java} | 12 +- .../mixin/ShulkerBoxMenuAccessor.java | 17 + .../ShulkerBoxScreenHandlerAccessor.java | 17 - .../mixin/SimpleEntityLookupAccessor.java | 18 - .../meteorclient/mixin/SimpleOptionMixin.java | 19 +- .../mixin/SkinManagerAccessor.java | 16 + ...deringMixin.java => SkyRendererMixin.java} | 23 +- .../meteorclient/mixin/SlimeBlockMixin.java | 12 +- .../meteorclient/mixin/SlotMixin.java | 15 +- ...SystemMixin.java => SoundEngineMixin.java} | 16 +- ...erMixin.java => SpawnerRendererMixin.java} | 14 +- ...lierMixin.java => SplashManagerMixin.java} | 31 +- ...yMixin.java => StringDecomposerMixin.java} | 16 +- .../mixin/StringSplitterAccessor.java | 16 + ...gHelperMixin.java => StringUtilMixin.java} | 8 +- .../mixin/SweetBerryBushBlockMixin.java | 6 +- .../meteorclient/mixin/TextMixin.java | 7 +- .../meteorclient/mixin/TitleScreenMixin.java | 16 +- .../mixin/TooltipComponentMixin.java | 13 +- ...entMixin.java => TooltipDisplayMixin.java} | 10 +- .../meteorclient/mixin/TridentItemMixin.java | 18 +- .../meteorclient/mixin/Vec3dMixin.java | 25 +- ...taBuilderMixin.java => VisGraphMixin.java} | 10 +- ...bwebBlockMixin.java => WebBlockMixin.java} | 10 +- .../meteorclient/mixin/WingsLayerMixin.java | 38 ++ .../meteorclient/mixin/WorldBorderMixin.java | 6 +- .../mixin/WorldRendererMixin.java | 120 +++-- .../AbstractTerrainRenderContextMixin.java | 5 +- .../mixin/indigo/BlockRenderInfoMixin.java | 10 +- .../ChunkAwareBlockCollisionSweeperMixin.java | 24 +- .../lithium/LithiumEntityCollisionsMixin.java | 6 +- .../mixin/sodium/MeshVertexConsumerMixin.java | 2 +- .../SodiumBlockOcclusionCacheMixin.java | 19 +- .../sodium/SodiumBlockRendererMixin.java | 6 +- .../SodiumDefaultFluidRendererMixin.java | 12 +- ...RendererImplDefaultRenderContextMixin.java | 10 +- .../sodium/SodiumFluidRendererImplMixin.java | 6 +- .../SodiumInnerPartitionBSPNodeMixin.java | 10 +- .../sodium/SodiumLightDataAccessMixin.java | 19 +- .../IAbstractFurnaceScreenHandler.java | 2 +- .../meteorclient/mixininterface/IBox.java | 2 +- .../meteorclient/mixininterface/IChatHud.java | 4 +- .../mixininterface/IEntityRenderState.java | 11 +- .../mixininterface/IMessageHandler.java | 10 +- .../mixininterface/IMinecraftClient.java | 4 +- .../IPlayerInteractEntityC2SPacket.java | 6 +- .../mixininterface/IRaycastContext.java | 8 +- .../meteorclient/mixininterface/IVec3d.java | 16 +- .../mixininterface/IWorldRenderer.java | 4 +- .../pathing/BaritonePathManager.java | 16 +- .../pathing/BaritoneSettings.java | 35 +- .../meteorclient/pathing/IPathManager.java | 17 +- .../meteorclient/pathing/NopPathManager.java | 30 +- .../renderer/FixedUniformStorage.java | 14 +- .../renderer/FullScreenRenderer.java | 5 +- .../meteorclient/renderer/MeshBuilder.java | 11 +- .../meteorclient/renderer/MeshRenderer.java | 27 +- .../meteorclient/renderer/MeshUniforms.java | 4 +- .../renderer/MeteorRenderPipelines.java | 39 +- .../meteorclient/renderer/Renderer2D.java | 8 +- .../meteorclient/renderer/Renderer3D.java | 28 +- .../meteorclient/renderer/Texture.java | 4 +- .../renderer/text/CustomTextRenderer.java | 10 +- .../renderer/text/VanillaTextRenderer.java | 18 +- .../settings/BlockDataSetting.java | 20 +- .../settings/BlockListSetting.java | 35 +- .../settings/BlockPosSetting.java | 12 +- .../meteorclient/settings/BlockSetting.java | 22 +- .../meteorclient/settings/BoolSetting.java | 6 +- .../settings/ColorListSetting.java | 12 +- .../meteorclient/settings/ColorSetting.java | 6 +- .../meteorclient/settings/DoubleSetting.java | 6 +- .../settings/EnchantmentListSetting.java | 64 +-- .../settings/EntityTypeListSetting.java | 60 +-- .../meteorclient/settings/EnumSetting.java | 6 +- .../settings/FontFaceSetting.java | 12 +- .../meteorclient/settings/GenericSetting.java | 6 +- .../meteorclient/settings/IBlockData.java | 2 +- .../meteorclient/settings/IntSetting.java | 6 +- .../settings/ItemListSetting.java | 36 +- .../meteorclient/settings/ItemSetting.java | 22 +- .../meteorclient/settings/KeybindSetting.java | 12 +- .../settings/ModuleListSetting.java | 23 +- .../settings/PacketListSetting.java | 27 +- .../settings/ParticleTypeListSetting.java | 41 +- .../settings/ScreenHandlerListSetting.java | 50 +- .../meteorclient/settings/Setting.java | 16 +- .../meteorclient/settings/SettingGroup.java | 20 +- .../meteorclient/settings/Settings.java | 27 +- .../settings/SoundEventListSetting.java | 35 +- .../StatusEffectAmplifierMapSetting.java | 47 +- .../settings/StatusEffectListSetting.java | 51 ++- .../settings/StorageBlockListSetting.java | 70 +-- .../settings/StringListSetting.java | 22 +- .../meteorclient/settings/StringSetting.java | 6 +- .../settings/Vector3dSetting.java | 10 +- .../meteorclient/systems/System.java | 15 +- .../systems/accounts/Account.java | 56 +-- .../systems/accounts/AccountCache.java | 8 +- .../systems/accounts/Accounts.java | 16 +- .../systems/accounts/MicrosoftLogin.java | 16 +- .../accounts/types/CrackedAccount.java | 6 +- .../accounts/types/MicrosoftAccount.java | 3 +- .../accounts/types/SessionAccount.java | 10 +- .../accounts/types/TheAlteningAccount.java | 13 +- .../meteorclient/systems/config/Config.java | 24 +- .../meteorclient/systems/friends/Friend.java | 13 +- .../meteorclient/systems/friends/Friends.java | 28 +- .../meteorclient/systems/hud/Hud.java | 14 +- .../meteorclient/systems/hud/HudBox.java | 8 +- .../meteorclient/systems/hud/HudElement.java | 20 +- .../meteorclient/systems/hud/HudRenderer.java | 31 +- .../systems/hud/elements/ArmorHud.java | 9 +- .../systems/hud/elements/CombatHud.java | 40 +- .../systems/hud/elements/CompassHud.java | 6 +- .../systems/hud/elements/HoleHud.java | 14 +- .../systems/hud/elements/InventoryHud.java | 9 +- .../systems/hud/elements/ItemHud.java | 6 +- .../systems/hud/elements/MapHud.java | 26 +- .../systems/hud/elements/PlayerModelHud.java | 11 +- .../systems/hud/elements/PlayerRadarHud.java | 15 +- .../systems/hud/elements/PotionTimersHud.java | 20 +- .../hud/elements/keyboard/KeyboardHud.java | 56 +-- .../hud/elements/keyboard/LayoutContext.java | 8 +- .../hud/screens/AddHudElementScreen.java | 26 +- .../systems/hud/screens/HudEditorScreen.java | 49 +- .../hud/screens/HudElementPresetsScreen.java | 4 +- .../systems/hud/screens/HudElementScreen.java | 4 +- .../meteorclient/systems/macros/Macro.java | 18 +- .../meteorclient/systems/macros/Macros.java | 8 +- .../systems/modules/Categories.java | 2 +- .../systems/modules/Category.java | 5 +- .../meteorclient/systems/modules/Module.java | 41 +- .../meteorclient/systems/modules/Modules.java | 39 +- .../systems/modules/combat/AnchorAura.java | 44 +- .../systems/modules/combat/AntiAnchor.java | 6 +- .../systems/modules/combat/AntiAnvil.java | 6 +- .../systems/modules/combat/AntiBed.java | 22 +- .../systems/modules/combat/ArrowDodge.java | 46 +- .../systems/modules/combat/AttributeSwap.java | 52 +-- .../systems/modules/combat/AutoAnvil.java | 22 +- .../systems/modules/combat/AutoArmor.java | 48 +- .../systems/modules/combat/AutoCity.java | 25 +- .../systems/modules/combat/AutoEXP.java | 23 +- .../systems/modules/combat/AutoLog.java | 39 +- .../systems/modules/combat/AutoTotem.java | 14 +- .../systems/modules/combat/AutoTrap.java | 26 +- .../systems/modules/combat/AutoWeapon.java | 8 +- .../systems/modules/combat/AutoWeb.java | 20 +- .../systems/modules/combat/BedAura.java | 51 ++- .../systems/modules/combat/BowAimbot.java | 30 +- .../systems/modules/combat/BowSpam.java | 15 +- .../systems/modules/combat/Burrow.java | 42 +- .../systems/modules/combat/Criticals.java | 27 +- .../systems/modules/combat/CrystalAura.java | 123 +++-- .../systems/modules/combat/Hitboxes.java | 15 +- .../systems/modules/combat/HoleFiller.java | 34 +- .../systems/modules/combat/KillAura.java | 72 +-- .../systems/modules/combat/Offhand.java | 27 +- .../systems/modules/combat/Quiver.java | 64 +-- .../systems/modules/combat/SelfAnvil.java | 8 +- .../systems/modules/combat/SelfTrap.java | 19 +- .../systems/modules/combat/SelfWeb.java | 2 +- .../systems/modules/combat/Surround.java | 53 ++- .../systems/modules/misc/AutoReconnect.java | 6 +- .../systems/modules/misc/BetterChat.java | 91 ++-- .../systems/modules/misc/BookBot.java | 36 +- .../systems/modules/misc/DiscordPresence.java | 49 +- .../systems/modules/misc/InventoryTweaks.java | 51 ++- .../systems/modules/misc/MessageAura.java | 6 +- .../systems/modules/misc/Notebot.java | 67 ++- .../systems/modules/misc/Notifier.java | 114 ++--- .../systems/modules/misc/PacketCanceller.java | 2 +- .../systems/modules/misc/PacketLogger.java | 2 +- .../systems/modules/misc/ServerSpoof.java | 54 +-- .../systems/modules/misc/SoundBlocker.java | 8 +- .../systems/modules/misc/Spam.java | 2 +- .../modules/misc/swarm/SwarmWorker.java | 2 +- .../systems/modules/movement/Anchor.java | 32 +- .../systems/modules/movement/AutoWalk.java | 10 +- .../systems/modules/movement/AutoWasp.java | 40 +- .../systems/modules/movement/Blink.java | 24 +- .../systems/modules/movement/ClickTP.java | 60 +-- .../systems/modules/movement/ElytraBoost.java | 27 +- .../modules/movement/EntityControl.java | 25 +- .../systems/modules/movement/FastClimb.java | 8 +- .../systems/modules/movement/Flight.java | 35 +- .../systems/modules/movement/GUIMove.java | 18 +- .../systems/modules/movement/Jesus.java | 68 +-- .../systems/modules/movement/LongJump.java | 37 +- .../systems/modules/movement/NoFall.java | 46 +- .../systems/modules/movement/NoSlow.java | 2 +- .../systems/modules/movement/Parkour.java | 14 +- .../systems/modules/movement/ReverseStep.java | 12 +- .../systems/modules/movement/SafeWalk.java | 34 +- .../systems/modules/movement/Scaffold.java | 33 +- .../systems/modules/movement/Slippy.java | 2 +- .../systems/modules/movement/Spider.java | 4 +- .../systems/modules/movement/Sprint.java | 10 +- .../systems/modules/movement/Step.java | 32 +- .../systems/modules/movement/Velocity.java | 9 +- .../movement/elytrafly/ElytraFlightMode.java | 30 +- .../modules/movement/elytrafly/ElytraFly.java | 74 +-- .../movement/elytrafly/modes/Bounce.java | 38 +- .../movement/elytrafly/modes/Packet.java | 23 +- .../systems/modules/movement/speed/Speed.java | 8 +- .../modules/movement/speed/SpeedMode.java | 36 +- .../modules/movement/speed/modes/Vanilla.java | 8 +- .../systems/modules/player/AirPlace.java | 25 +- .../systems/modules/player/AntiHunger.java | 16 +- .../systems/modules/player/AutoEat.java | 24 +- .../systems/modules/player/AutoFish.java | 16 +- .../systems/modules/player/AutoGap.java | 27 +- .../systems/modules/player/AutoMend.java | 10 +- .../systems/modules/player/AutoReplenish.java | 11 +- .../systems/modules/player/AutoRespawn.java | 2 +- .../systems/modules/player/AutoTool.java | 22 +- .../systems/modules/player/ChestSwap.java | 18 +- .../systems/modules/player/EXPThrower.java | 5 +- .../systems/modules/player/FastUse.java | 8 +- .../systems/modules/player/GhostHand.java | 27 +- .../modules/player/InstantRebreak.java | 21 +- .../modules/player/MiddleClickExtra.java | 29 +- .../systems/modules/player/NoInteract.java | 51 +-- .../systems/modules/player/NoMiningTrace.java | 6 +- .../systems/modules/player/NoRotate.java | 6 +- .../modules/player/NoStatusEffects.java | 6 +- .../systems/modules/player/OffhandCrash.java | 12 +- .../systems/modules/player/PotionSaver.java | 6 +- .../systems/modules/player/SpeedMine.java | 25 +- .../systems/modules/render/BetterTab.java | 29 +- .../modules/render/BetterTooltips.java | 162 +++---- .../modules/render/BlockSelection.java | 33 +- .../systems/modules/render/Blur.java | 15 +- .../systems/modules/render/BossStack.java | 12 +- .../systems/modules/render/Breadcrumbs.java | 2 +- .../modules/render/BreakIndicators.java | 30 +- .../systems/modules/render/CameraTweaks.java | 5 +- .../systems/modules/render/Chams.java | 6 +- .../systems/modules/render/CityESP.java | 6 +- .../systems/modules/render/ESP.java | 41 +- .../systems/modules/render/EntityOwner.java | 25 +- .../systems/modules/render/FreeLook.java | 15 +- .../systems/modules/render/Freecam.java | 113 +++-- .../systems/modules/render/Fullbright.java | 29 +- .../systems/modules/render/HandView.java | 29 +- .../systems/modules/render/HoleESP.java | 71 +-- .../systems/modules/render/ItemHighlight.java | 4 +- .../systems/modules/render/ItemPhysics.java | 43 +- .../systems/modules/render/LightOverlay.java | 2 +- .../systems/modules/render/LogoutSpots.java | 31 +- .../systems/modules/render/Nametags.java | 85 ++-- .../systems/modules/render/NoRender.java | 19 +- .../systems/modules/render/PopChams.java | 12 +- .../systems/modules/render/StorageESP.java | 21 +- .../systems/modules/render/TimeChanger.java | 6 +- .../systems/modules/render/Tracers.java | 49 +- .../systems/modules/render/Trail.java | 8 +- .../systems/modules/render/Trajectories.java | 80 ++-- .../systems/modules/render/TunnelESP.java | 57 ++- .../systems/modules/render/VoidESP.java | 29 +- .../systems/modules/render/WallHack.java | 2 +- .../modules/render/WaypointsModule.java | 18 +- .../systems/modules/render/Xray.java | 24 +- .../systems/modules/render/Zoom.java | 6 +- .../modules/render/blockesp/BlockESP.java | 21 +- .../modules/render/blockesp/ESPBlock.java | 22 +- .../modules/render/blockesp/ESPBlockData.java | 10 +- .../render/blockesp/ESPBlockDataScreen.java | 2 +- .../modules/render/blockesp/ESPChunk.java | 22 +- .../modules/render/blockesp/ESPGroup.java | 5 +- .../modules/render/marker/BaseMarker.java | 18 +- .../modules/render/marker/CuboidMarker.java | 2 +- .../systems/modules/render/marker/Marker.java | 24 +- .../modules/render/marker/Sphere2dMarker.java | 2 +- .../systems/modules/world/AutoBreed.java | 20 +- .../systems/modules/world/AutoBrewer.java | 28 +- .../systems/modules/world/AutoMount.java | 32 +- .../systems/modules/world/AutoNametag.java | 12 +- .../systems/modules/world/AutoShearer.java | 18 +- .../systems/modules/world/AutoSign.java | 12 +- .../systems/modules/world/AutoSmelter.java | 10 +- .../systems/modules/world/BuildHeight.java | 8 +- .../systems/modules/world/Collisions.java | 14 +- .../systems/modules/world/EChestFarmer.java | 26 +- .../systems/modules/world/EndermanLook.java | 31 +- .../systems/modules/world/Excavator.java | 2 +- .../systems/modules/world/Flamethrower.java | 30 +- .../systems/modules/world/HighwayBuilder.java | 345 +++++++------- .../systems/modules/world/InfinityMiner.java | 40 +- .../systems/modules/world/LiquidFiller.java | 26 +- .../systems/modules/world/MountBypass.java | 7 +- .../systems/modules/world/NoGhostBlocks.java | 2 +- .../systems/modules/world/Nuker.java | 75 +-- .../systems/modules/world/PacketMine.java | 27 +- .../systems/modules/world/SpawnProofer.java | 18 +- .../systems/modules/world/StashFinder.java | 52 +-- .../systems/modules/world/VeinMiner.java | 36 +- .../systems/profiles/Profile.java | 18 +- .../systems/profiles/Profiles.java | 8 +- .../meteorclient/systems/proxies/Proxies.java | 17 +- .../meteorclient/systems/proxies/Proxy.java | 38 +- .../systems/waypoints/Waypoint.java | 24 +- .../systems/waypoints/Waypoints.java | 22 +- .../utils/OutlineRenderCommandQueue.java | 72 +-- .../meteorclient/utils/Utils.java | 166 +++---- .../utils/entity/DamageUtils.java | 166 +++---- .../utils/entity/EntityUtils.java | 121 ++--- .../utils/entity/SortPriority.java | 4 +- .../utils/entity/TargetUtils.java | 8 +- .../entity/fakeplayer/FakePlayerEntity.java | 30 +- .../simulator/ProjectileEntitySimulator.java | 93 ++-- .../entity/simulator/SimulationStep.java | 2 +- .../utils/misc/ComponentMapReader.java | 60 +-- .../utils/misc/FakeClientPlayer.java | 30 +- .../utils/misc/ISerializable.java | 6 +- .../meteorclient/utils/misc/Keybind.java | 16 +- .../meteorclient/utils/misc/MBlockPos.java | 14 +- .../utils/misc/MeteorStarscript.java | 132 +++--- .../utils/misc/MissHitResult.java | 5 +- .../meteorclient/utils/misc/MyPotion.java | 18 +- .../meteorclient/utils/misc/Names.java | 77 ++-- .../meteorclient/utils/misc/input/Input.java | 11 +- .../utils/misc/input/KeyBinds.java | 14 +- .../utils/misc/text/MeteorClickEvent.java | 9 +- .../utils/misc/text/TextUtils.java | 26 +- .../meteorclient/utils/network/Capes.java | 12 +- .../utils/network/PacketUtils.java | 2 +- .../utils/network/PacketUtilsUtil.java | 14 +- .../utils/notebot/NotebotUtils.java | 11 +- .../utils/notebot/decoder/NBSSongDecoder.java | 8 +- .../utils/notebot/decoder/SongDecoders.java | 2 +- .../notebot/decoder/TextSongDecoder.java | 2 +- .../InstrumentDetectFunction.java | 8 +- .../InstrumentDetectMode.java | 6 +- .../meteorclient/utils/notebot/song/Note.java | 2 +- .../meteorclient/utils/player/ChatUtils.java | 56 +-- .../utils/player/CustomPlayerInput.java | 10 +- .../utils/player/EChestMemory.java | 22 +- .../utils/player/FindItemResult.java | 12 +- .../meteorclient/utils/player/InvUtils.java | 35 +- .../utils/player/InventorySorter.java | 50 +- .../meteorclient/utils/player/PathFinder.java | 28 +- .../utils/player/PlayerUtils.java | 81 ++-- .../meteorclient/utils/player/Rotations.java | 28 +- .../meteorclient/utils/player/SlotUtils.java | 52 ++- .../utils/player/TitleScreenCredits.java | 28 +- .../CustomBannerGuiElementRenderState.java | 28 +- .../CustomBannerGuiElementRenderer.java | 42 +- .../CustomOutlineVertexConsumerProvider.java | 14 +- .../utils/render/IVertexConsumerProvider.java | 4 +- .../MeshBuilderVertexConsumerProvider.java | 6 +- .../utils/render/MeteorToast.java | 50 +- .../utils/render/NametagUtils.java | 10 +- .../NoopImmediateVertexConsumerProvider.java | 12 +- .../NoopOutlineVertexConsumerProvider.java | 10 +- .../utils/render/NoopVertexConsumer.java | 2 +- .../meteorclient/utils/render/PeekScreen.java | 30 +- .../utils/render/RenderUtils.java | 28 +- .../utils/render/SimpleBlockRenderer.java | 57 +-- .../utils/render/WireframeEntityRenderer.java | 49 +- ...rapperImmediateVertexConsumerProvider.java | 16 +- .../utils/render/color/Color.java | 28 +- .../utils/render/color/SettingColor.java | 16 +- .../utils/render/postprocess/ChamsShader.java | 13 +- .../postprocess/EntityOutlineShader.java | 2 +- .../render/postprocess/EntityShader.java | 2 +- .../render/postprocess/OutlineUniforms.java | 5 +- .../render/postprocess/PostProcessShader.java | 17 +- .../utils/render/prompts/OkPrompt.java | 5 +- .../utils/render/prompts/Prompt.java | 5 +- .../utils/render/prompts/YesNoPrompt.java | 8 +- .../utils/tooltip/BannerTooltipComponent.java | 54 +-- .../utils/tooltip/BookTooltipComponent.java | 30 +- .../utils/tooltip/BundleTooltipComponent.java | 62 +-- .../tooltip/ContainerTooltipComponent.java | 24 +- .../utils/tooltip/EntityTooltipComponent.java | 20 +- .../utils/tooltip/MapTooltipComponent.java | 32 +- .../utils/tooltip/MeteorTooltipData.java | 8 +- .../utils/tooltip/TextTooltipComponent.java | 16 +- .../utils/world/BlockEntityIterator.java | 12 +- .../utils/world/BlockIterator.java | 6 +- .../meteorclient/utils/world/BlockUtils.java | 88 ++-- .../utils/world/CardinalDirection.java | 2 +- .../utils/world/ChunkIterator.java | 17 +- .../meteorclient/utils/world/Dir.java | 10 +- .../meteorclient/utils/world/TickRate.java | 8 +- .../resources/meteor-client.accesswidener | 40 +- src/main/resources/meteor-client.mixins.json | 224 ++++----- 748 files changed, 9724 insertions(+), 8977 deletions(-) rename src/main/java/meteordevelopment/meteorclient/mixin/{AbstractBoatEntityMixin.java => AbstractBoatMixin.java} (56%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerAccessor.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerEntityAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{AbstractClientPlayerEntityMixin.java => AbstractClientPlayerMixin.java} (70%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/AbstractContainerScreenAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{HandledScreenMixin.java => AbstractContainerScreenMixin.java} (51%) rename src/main/java/meteordevelopment/meteorclient/mixin/{MountScreenHandlerAccessor.java => AbstractMountInventoryMenuAccessor.java} (62%) rename src/main/java/meteordevelopment/meteorclient/mixin/{AbstractSignBlockEntityRendererMixin.java => AbstractSignRendererMixin.java} (67%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ArmorFeatureRendererMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{ArmorStandEntityRendererMixin.java => ArmorStandRendererMixin.java} (61%) rename src/main/java/meteordevelopment/meteorclient/mixin/{AttackRangeComponentMixin.java => AttackRangeMixin.java} (57%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/AvatarRendererMixin.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/BannerBlockEntityRendererMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/BannerRendererMixin.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/BeaconBlockEntityRendererMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/BeaconRendererMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{TextHandlerAccessor.java => BlockBehaviourAccessor.java} (59%) rename src/main/java/meteordevelopment/meteorclient/mixin/{AbstractBlockMixin.java => BlockBehaviourMixin.java} (69%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/BlockCollisionSpliteratorMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/BlockCollisionsMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{BlockEntityRenderManagerAccessor.java => BlockEntityRenderDispatcherAccessor.java} (50%) rename src/main/java/meteordevelopment/meteorclient/mixin/{BlockEntityRenderManagerMixin.java => BlockEntityRenderDispatcherMixin.java} (56%) rename src/main/java/meteordevelopment/meteorclient/mixin/{BlockRenderManagerMixin.java => BlockRenderDispatcherMixin.java} (53%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/BookScreenMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/BookViewScreenMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{BossBarHudMixin.java => BossHealthOverlayMixin.java} (77%) rename src/main/java/meteordevelopment/meteorclient/mixin/{RegistriesMixin.java => BuiltInRegistriesMixin.java} (50%) rename src/main/java/meteordevelopment/meteorclient/mixin/{BundleTooltipSubmenuHandlerMixin.java => BundleMouseActionsMixin.java} (54%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ProjectionMatrix2Accessor.java => CachedOrthoProjectionMatrixBufferAccessor.java} (52%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/CapeFeatureRendererMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/CapeLayerMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ChatComponentAccessor.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ChatHudAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{ChunkAccessor.java => ChunkAccessAccessor.java} (65%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ChunkBorderDebugRendererMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ChunkBorderRendererMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkCacheAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{ClientWorldMixin.java => ClientLevelMixin.java} (68%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ClientPacketListenerAccessor.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerAccessor.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerInteractionManagerAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{EntityVelocityUpdateS2CPacketAccessor.java => ClientboundSetEntityMotionPacketAccessor.java} (54%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ChatInputSuggestorMixin.java => CommandSuggestionsMixin.java} (61%) rename src/main/java/meteordevelopment/meteorclient/mixin/{CompassStateMixin.java => CompassAngleStateMixin.java} (58%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ClientConnectionAccessor.java => ConnectionAccessor.java} (75%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ClientConnectionMixin.java => ConnectionMixin.java} (54%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ContainerComponentAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{CreativeInventoryScreenAccessor.java => CreativeModeInventoryScreenAccessor.java} (55%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ItemGroupsAccessor.java => CreativeModeTabsAccessor.java} (56%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ItemGroupsMixin.java => CreativeModeTabsMixin.java} (76%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/CustomHeadLayerMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{DownloaderMixin.java => DownloadQueueMixin.java} (77%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ServerResourcePackLoaderMixin.java => DownloadedPackSourceMixin.java} (82%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/DrawContextMixin.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ElytraFeatureRendererMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/EnchantTableRendererMixin.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/EnchantingTableBlockEntityRendererMixin.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalEntityRendererMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{EndCrystalEntityModelMixin.java => EndCrystalModelMixin.java} (53%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalRendererMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{ClientPlayerEntityAccessor.java => EntitySectionAccessor.java} (53%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/EntitySectionStorageAccessor.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/EntityTrackingSectionAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{FishingBobberEntityAccessor.java => FishingHookAccessor.java} (66%) rename src/main/java/meteordevelopment/meteorclient/mixin/{FishingBobberEntityMixin.java => FishingHookMixin.java} (70%) rename src/main/java/meteordevelopment/meteorclient/mixin/{TextRendererMixin.java => FontMixin.java} (81%) rename src/main/java/meteordevelopment/meteorclient/mixin/{HungerManagerMixin.java => FoodDataMixin.java} (74%) rename src/main/java/meteordevelopment/meteorclient/mixin/{PacketByteBufMixin.java => FriendlyByteBufMixin.java} (56%) rename src/main/java/meteordevelopment/meteorclient/mixin/{GlBackendMixin.java => GlDeviceMixin.java} (90%) rename src/main/java/meteordevelopment/meteorclient/mixin/{DrawContextAccessor.java => GuiGraphicsAccessor.java} (62%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/GuiGraphicsMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{InGameHudMixin.java => GuiMixin.java} (58%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/HandledScreenAccessor.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/HeadFeatureRendererMixin.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/HeldItemRendererMixin.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/HumanoidArmorLayerMixin.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/InGameOverlayRendererMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{BlockRenderLayersMixin.java => ItemBlockRenderTypesMixin.java} (61%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ItemContainerContentsAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{ContainerComponentMixin.java => ItemContainerContentsMixin.java} (64%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ItemInHandRendererMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{ItemRenderStateAccessor.java => ItemStackRenderStateAccessor.java} (53%) rename src/main/java/meteordevelopment/meteorclient/mixin/{TransformationMixin.java => ItemTransformMixin.java} (67%) rename src/main/java/meteordevelopment/meteorclient/mixin/{MultiplayerScreenMixin.java => JoinMultiplayerScreenMixin.java} (76%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingAccessor.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/KeyMappingAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{KeyboardMixin.java => KeyboardHandlerMixin.java} (65%) rename src/main/java/meteordevelopment/meteorclient/mixin/{WorldAccessor.java => LevelAccessor.java} (51%) rename src/main/java/meteordevelopment/meteorclient/mixin/{WorldChunkMixin.java => LevelChunkMixin.java} (71%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/LevelEntityGetterAdapterAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{WorldRendererAccessor.java => LevelRendererAccessor.java} (54%) rename src/main/java/meteordevelopment/meteorclient/mixin/{LightmapTextureManagerMixin.java => LightTextureMixin.java} (59%) rename src/main/java/meteordevelopment/meteorclient/mixin/{LightningEntityRendererMixin.java => LightningBoltRendererMixin.java} (70%) rename src/main/java/meteordevelopment/meteorclient/mixin/{FluidRendererMixin.java => LiquidBlockRendererMixin.java} (70%) rename src/main/java/meteordevelopment/meteorclient/mixin/{AbstractBlockAccessor.java => LocalPlayerAccessor.java} (60%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/MinecraftAccessor.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{ClientChunkManagerAccessor.java => MobBucketItemAccessor.java} (57%) rename src/main/java/meteordevelopment/meteorclient/mixin/{StatusEffectFogModifierMixin.java => MobEffectFogEnvironmentMixin.java} (57%) rename src/main/java/meteordevelopment/meteorclient/mixin/{StatusEffectInstanceAccessor.java => MobEffectInstanceAccessor.java} (72%) rename src/main/java/meteordevelopment/meteorclient/mixin/{StatusEffectInstanceMixin.java => MobEffectInstanceMixin.java} (73%) rename src/main/java/meteordevelopment/meteorclient/mixin/{MobEntityMixin.java => MobMixin.java} (78%) rename src/main/java/meteordevelopment/meteorclient/mixin/{BlockModelRendererMixin.java => ModelBlockRendererMixin.java} (54%) rename src/main/java/meteordevelopment/meteorclient/mixin/{MouseMixin.java => MouseHandlerMixin.java} (61%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/MultiPlayerGameModeAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{MutableTextMixin.java => MutableComponentMixin.java} (63%) rename src/main/java/meteordevelopment/meteorclient/mixin/{GameOptionsMixin.java => OptionsMixin.java} (63%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ParticleEngineMixin.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ParticleManagerMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{PlayerEntityAccessor.java => PlayerAccessor.java} (54%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityRendererMixin.java rename src/main/java/meteordevelopment/meteorclient/mixin/{PlayerListEntryMixin.java => PlayerInfoMixin.java} (58%) rename src/main/java/meteordevelopment/meteorclient/mixin/{PlayerEntityMixin.java => PlayerMixin.java} (75%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/PlayerSkinProviderAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{PlayerListHudMixin.java => PlayerTabOverlayMixin.java} (65%) delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/RenderLayerAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{EntityBucketItemAccessor.java => RenderTypeAccessor.java} (55%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ResourceReloadLoggerAccessor.java => ResourceLoadStateTrackerAccessor.java} (60%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ScreenEffectRendererMixin.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/SectionedEntityCacheAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{ServerPlayerEntityMixin.java => ServerPlayerMixin.java} (73%) rename src/main/java/meteordevelopment/meteorclient/mixin/{PlayerMoveC2SPacketAccessor.java => ServerboundMovePlayerPacketAccessor.java} (74%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ShaderLoaderMixin.java => ShaderManagerMixin.java} (64%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ShadowPiecesCommandRendererMixin.java => ShadowFeatureRendererMixin.java} (57%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ShulkerBoxMenuAccessor.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/ShulkerBoxScreenHandlerAccessor.java delete mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/SimpleEntityLookupAccessor.java create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/SkinManagerAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{SkyRenderingMixin.java => SkyRendererMixin.java} (63%) rename src/main/java/meteordevelopment/meteorclient/mixin/{SoundSystemMixin.java => SoundEngineMixin.java} (68%) rename src/main/java/meteordevelopment/meteorclient/mixin/{MobSpawnerBlockEntityRendererMixin.java => SpawnerRendererMixin.java} (55%) rename src/main/java/meteordevelopment/meteorclient/mixin/{SplashTextResourceSupplierMixin.java => SplashManagerMixin.java} (55%) rename src/main/java/meteordevelopment/meteorclient/mixin/{TextVisitFactoryMixin.java => StringDecomposerMixin.java} (58%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/StringSplitterAccessor.java rename src/main/java/meteordevelopment/meteorclient/mixin/{StringHelperMixin.java => StringUtilMixin.java} (71%) rename src/main/java/meteordevelopment/meteorclient/mixin/{TooltipDisplayComponentMixin.java => TooltipDisplayMixin.java} (63%) rename src/main/java/meteordevelopment/meteorclient/mixin/{ChunkOcclusionDataBuilderMixin.java => VisGraphMixin.java} (73%) rename src/main/java/meteordevelopment/meteorclient/mixin/{CobwebBlockMixin.java => WebBlockMixin.java} (82%) create mode 100644 src/main/java/meteordevelopment/meteorclient/mixin/WingsLayerMixin.java diff --git a/build.gradle.kts b/build.gradle.kts index 17cfb27b56..7d04f26ddf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -67,7 +67,7 @@ configurations { dependencies { // Fabric minecraft(libs.minecraft) - mappings(variantOf(libs.yarn) { classifier("v2") }) + mappings(loom.officialMojangMappings()) modImplementation(libs.fabric.loader) val fapiVersion = libs.versions.fabric.api.get() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 09a02047d7..5e7c6e3c59 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,13 +1,12 @@ [versions] # Fabric (https://fabricmc.net/develop) minecraft = "1.21.11" -yarn-mappings = "1.21.11+build.3" -fabric-loader = "0.18.2" -fabric-api = "0.140.0+1.21.11" +fabric-loader = "0.18.5" +fabric-api = "0.141.3+1.21.11" # Plugins # Loom (https://github.com/FabricMC/fabric-loom) -loom = "1.14-SNAPSHOT" +loom = "1.15-SNAPSHOT" # Mods # Baritone (https://github.com/MeteorDevelopment/baritone) @@ -38,7 +37,6 @@ waybackauthlib = "1.0.1" [libraries] # Fabric base minecraft = { module = "com.mojang:minecraft", version.ref = "minecraft" } -yarn = { module = "net.fabricmc:yarn", version.ref = "yarn-mappings" } fabric-loader = { module = "net.fabricmc:fabric-loader", version.ref = "fabric-loader" } # Mods diff --git a/src/main/java/meteordevelopment/meteorclient/MeteorClient.java b/src/main/java/meteordevelopment/meteorclient/MeteorClient.java index 4711bd80bd..b492273261 100644 --- a/src/main/java/meteordevelopment/meteorclient/MeteorClient.java +++ b/src/main/java/meteordevelopment/meteorclient/MeteorClient.java @@ -35,9 +35,9 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.metadata.ModMetadata; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.ChatScreen; -import net.minecraft.util.Identifier; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.resources.Identifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spongepowered.asm.mixin.MixinEnvironment; @@ -55,7 +55,7 @@ public class MeteorClient implements ClientModInitializer { public static MeteorClient INSTANCE; public static MeteorAddon ADDON; - public static MinecraftClient mc; + public static Minecraft mc; public static final IEventBus EVENT_BUS = new EventBus(); public static final File FOLDER = FabricLoader.getInstance().getGameDir().resolve(MOD_ID).toFile(); public static final Logger LOG; @@ -84,7 +84,7 @@ public void onInitializeClient() { } // Global minecraft client accessor - mc = MinecraftClient.getInstance(); + mc = Minecraft.getInstance(); if (FabricLoader.getInstance().isDevelopmentEnvironment()) { LOG.info("Force loading mixins"); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/Command.java b/src/main/java/meteordevelopment/meteorclient/commands/Command.java index 18fea76782..4d585acb77 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/Command.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/Command.java @@ -13,19 +13,19 @@ import meteordevelopment.meteorclient.systems.config.Config; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.client.MinecraftClient; -import net.minecraft.command.CommandRegistryAccess; -import net.minecraft.command.CommandSource; -import net.minecraft.registry.BuiltinRegistries; -import net.minecraft.server.command.CommandManager; -import net.minecraft.text.Text; +import net.minecraft.client.Minecraft; +import net.minecraft.commands.CommandBuildContext; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.data.registries.VanillaRegistries; +import net.minecraft.commands.Commands; +import net.minecraft.network.chat.Component; import java.util.List; public abstract class Command { - protected static CommandRegistryAccess REGISTRY_ACCESS = CommandManager.createRegistryAccess(BuiltinRegistries.createWrapperLookup()); + protected static CommandBuildContext REGISTRY_ACCESS = Commands.createRegistryAccess(VanillaRegistries.createWrapperLookup()); protected static final int SINGLE_SUCCESS = com.mojang.brigadier.Command.SINGLE_SUCCESS; - protected static final MinecraftClient mc = MeteorClient.mc; + protected static final Minecraft mc = MeteorClient.mc; private final String name; private final String title; @@ -40,26 +40,26 @@ public Command(String name, String description, String... aliases) { } // Helper methods to painlessly infer the CommandSource generic type argument - protected static RequiredArgumentBuilder argument(final String name, final ArgumentType type) { + protected static RequiredArgumentBuilder argument(final String name, final ArgumentType type) { return RequiredArgumentBuilder.argument(name, type); } - protected static LiteralArgumentBuilder literal(final String name) { + protected static LiteralArgumentBuilder literal(final String name) { return LiteralArgumentBuilder.literal(name); } - public final void registerTo(CommandDispatcher dispatcher) { + public final void registerTo(CommandDispatcher dispatcher) { register(dispatcher, name); for (String alias : aliases) register(dispatcher, alias); } - public void register(CommandDispatcher dispatcher, String name) { - LiteralArgumentBuilder builder = LiteralArgumentBuilder.literal(name); + public void register(CommandDispatcher dispatcher, String name) { + LiteralArgumentBuilder builder = LiteralArgumentBuilder.literal(name); build(builder); dispatcher.register(builder); } - public abstract void build(LiteralArgumentBuilder builder); + public abstract void build(LiteralArgumentBuilder builder); public String getName() { return name; @@ -83,7 +83,7 @@ public String toString(String... args) { return base.toString(); } - public void info(Text message) { + public void info(Component message) { ChatUtils.forceNextPrefixClass(getClass()); ChatUtils.sendMsg(title, message); } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/Commands.java b/src/main/java/meteordevelopment/meteorclient/commands/Commands.java index c80c9054ad..71a05ea1f7 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/Commands.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/Commands.java @@ -13,9 +13,9 @@ import meteordevelopment.meteorclient.pathing.PathManagers; import meteordevelopment.meteorclient.utils.PostInit; import meteordevelopment.orbit.EventHandler; -import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.command.CommandRegistryAccess; -import net.minecraft.command.CommandSource; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.commands.CommandBuildContext; +import net.minecraft.commands.SharedSuggestionProvider; import java.util.ArrayList; import java.util.Comparator; @@ -25,7 +25,7 @@ public class Commands { public static final List COMMANDS = new ArrayList<>(); - public static CommandDispatcher DISPATCHER = new CommandDispatcher<>(); + public static CommandDispatcher DISPATCHER = new CommandDispatcher<>(); @PostInit(dependencies = PathManagers.class) public static void init() { @@ -112,8 +112,8 @@ public static Command get(String name) { */ @EventHandler private static void onJoin(GameJoinedEvent event) { - ClientPlayNetworkHandler networkHandler = mc.getNetworkHandler(); - Command.REGISTRY_ACCESS = CommandRegistryAccess.of(networkHandler.getRegistryManager(), networkHandler.getEnabledFeatures()); + ClientPacketListener networkHandler = mc.getNetworkHandler(); + Command.REGISTRY_ACCESS = CommandBuildContext.of(networkHandler.getRegistryManager(), networkHandler.getEnabledFeatures()); DISPATCHER = new CommandDispatcher<>(); for (Command command : COMMANDS) { diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/BlockPosArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/BlockPosArgumentType.java index c9ce16f4de..5e17762bb3 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/BlockPosArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/BlockPosArgumentType.java @@ -12,15 +12,15 @@ import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.command.CommandSource; -import net.minecraft.command.argument.CoordinateArgument; -import net.minecraft.command.argument.EntityAnchorArgumentType; -import net.minecraft.command.argument.Vec3ArgumentType; -import net.minecraft.server.command.CommandManager; -import net.minecraft.text.Text; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.commands.arguments.coordinates.WorldCoordinate; +import net.minecraft.commands.arguments.EntityAnchorArgument; +import net.minecraft.commands.arguments.coordinates.Vec3Argument; +import net.minecraft.commands.Commands; +import net.minecraft.network.chat.Component; import net.minecraft.util.math.*; -import net.minecraft.world.World; +import net.minecraft.world.level.Level; import java.util.Arrays; import java.util.Collection; @@ -64,22 +64,23 @@ public class BlockPosArgumentType implements ArgumentType { private static final BlockPosArgumentType INSTANCE = new BlockPosArgumentType(); private static final Collection EXAMPLES = Arrays.asList("0 0 0", "~ ~ ~", "^ ^ ^", "^1 ^ ^-5", "~0.5 ~1 ~-5"); - public static final SimpleCommandExceptionType UNLOADED_EXCEPTION = new SimpleCommandExceptionType(Text.translatable("argument.pos.unloaded")); - public static final SimpleCommandExceptionType OUT_OF_WORLD_EXCEPTION = new SimpleCommandExceptionType(Text.translatable("argument.pos.outofworld")); - public static final SimpleCommandExceptionType OUT_OF_BOUNDS_EXCEPTION = new SimpleCommandExceptionType(Text.translatable("argument.pos.outofbounds")); + public static final SimpleCommandExceptionType UNLOADED_EXCEPTION = new SimpleCommandExceptionType(Component.translatable("argument.pos.unloaded")); + public static final SimpleCommandExceptionType OUT_OF_WORLD_EXCEPTION = new SimpleCommandExceptionType(Component.translatable("argument.pos.outofworld")); + public static final SimpleCommandExceptionType OUT_OF_BOUNDS_EXCEPTION = new SimpleCommandExceptionType(Component.translatable("argument.pos.outofbounds")); - private BlockPosArgumentType() {} + private BlockPosArgumentType() { + } public static BlockPosArgumentType blockPos() { return INSTANCE; } public static BlockPos getLoadedBlockPos(CommandContext context, String name) throws CommandSyntaxException { - ClientWorld clientLevel = mc.world; + ClientLevel clientLevel = mc.world; return getLoadedBlockPos(context, clientLevel, name); } - public static BlockPos getLoadedBlockPos(CommandContext context, ClientWorld level, String name) throws CommandSyntaxException { + public static BlockPos getLoadedBlockPos(CommandContext context, ClientLevel level, String name) throws CommandSyntaxException { BlockPos blockPos = getBlockPos(context, name); ChunkPos chunkPos = new ChunkPos(blockPos); if (!level.getChunkManager().isChunkLoaded(chunkPos.x, chunkPos.z)) { @@ -97,7 +98,7 @@ public static BlockPos getBlockPos(CommandContext context, String name) { public static BlockPos getValidBlockPos(CommandContext context, String name) throws CommandSyntaxException { BlockPos blockPos = getBlockPos(context, name); - if (!World.isValid(blockPos)) { + if (!ClientLevel.isValid(blockPos)) { throw OUT_OF_BOUNDS_EXCEPTION.create(); } else { return blockPos; @@ -109,18 +110,18 @@ public PosArgument parse(StringReader stringReader) throws CommandSyntaxExceptio } public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { - if (!(context.getSource() instanceof CommandSource)) { + if (!(context.getSource() instanceof SharedSuggestionProvider)) { return Suggestions.empty(); } else { String string = builder.getRemaining(); - Collection collection; + Collection collection; if (!string.isEmpty() && string.charAt(0) == '^') { - collection = Collections.singleton(CommandSource.RelativePosition.ZERO_LOCAL); + collection = Collections.singleton(SharedSuggestionProvider.TextCoordinates.ZERO_LOCAL); } else { - collection = ((CommandSource) context.getSource()).getBlockPositionSuggestions(); + collection = ((SharedSuggestionProvider) context.getSource()).getBlockPositionSuggestions(); } - return CommandSource.suggestPositions(string, collection, builder, CommandManager.getCommandValidator(this::parse)); + return SharedSuggestionProvider.suggestPositions(string, collection, builder, Commands.getCommandValidator(this::parse)); } } @@ -145,11 +146,11 @@ default BlockPos getBlockPos(S source) { } public static class DefaultPosArgument implements PosArgument { - private final CoordinateArgument x; - private final CoordinateArgument y; - private final CoordinateArgument z; + private final WorldCoordinate x; + private final WorldCoordinate y; + private final WorldCoordinate z; - public DefaultPosArgument(CoordinateArgument x, CoordinateArgument y, CoordinateArgument z) { + public DefaultPosArgument(WorldCoordinate x, WorldCoordinate y, WorldCoordinate z) { this.x = x; this.y = y; this.z = z; @@ -194,34 +195,34 @@ public boolean equals(Object o) { public static DefaultPosArgument parse(StringReader reader) throws CommandSyntaxException { int cursor = reader.getCursor(); - CoordinateArgument worldCoordinate = CoordinateArgument.parse(reader); + WorldCoordinate worldCoordinate = WorldCoordinate.parse(reader); if (reader.canRead() && reader.peek() == ' ') { reader.skip(); - CoordinateArgument worldCoordinate2 = CoordinateArgument.parse(reader); + WorldCoordinate worldCoordinate2 = WorldCoordinate.parse(reader); if (reader.canRead() && reader.peek() == ' ') { reader.skip(); - CoordinateArgument worldCoordinate3 = CoordinateArgument.parse(reader); + WorldCoordinate worldCoordinate3 = WorldCoordinate.parse(reader); return new DefaultPosArgument(worldCoordinate, worldCoordinate2, worldCoordinate3); } } reader.setCursor(cursor); - throw Vec3ArgumentType.INCOMPLETE_EXCEPTION.createWithContext(reader); + throw Vec3Argument.INCOMPLETE_EXCEPTION.createWithContext(reader); } public static DefaultPosArgument parse(StringReader reader, boolean centerIntegers) throws CommandSyntaxException { int cursor = reader.getCursor(); - CoordinateArgument worldCoordinate = CoordinateArgument.parse(reader, centerIntegers); + WorldCoordinate worldCoordinate = WorldCoordinate.parse(reader, centerIntegers); if (reader.canRead() && reader.peek() == ' ') { reader.skip(); - CoordinateArgument worldCoordinate2 = CoordinateArgument.parse(reader, false); + WorldCoordinate worldCoordinate2 = WorldCoordinate.parse(reader, false); if (reader.canRead() && reader.peek() == ' ') { reader.skip(); - CoordinateArgument worldCoordinate3 = CoordinateArgument.parse(reader, centerIntegers); + WorldCoordinate worldCoordinate3 = WorldCoordinate.parse(reader, centerIntegers); return new DefaultPosArgument(worldCoordinate, worldCoordinate2, worldCoordinate3); } } reader.setCursor(cursor); - throw Vec3ArgumentType.INCOMPLETE_EXCEPTION.createWithContext(reader); + throw Vec3Argument.INCOMPLETE_EXCEPTION.createWithContext(reader); } public static DefaultPosArgument absolute(double x, double y, double z) { @@ -258,7 +259,7 @@ public LookingPosArgument(double x, double y, double z) { @Override public Vec3d getPosition(S source) { Vec2f vec2 = mc.player.getRotationClient(); - Vec3d vec3 = EntityAnchorArgumentType.EntityAnchor.FEET.positionAt(mc.player); + Vec3d vec3 = EntityAnchorArgument.Anchor.Anchor.positionAt(mc.player); float f = MathHelper.cos((vec2.y + 90.0F) * (float) (Math.PI / 180.0)); float g = MathHelper.sin((vec2.y + 90.0F) * (float) (Math.PI / 180.0)); float h = MathHelper.cos(-vec2.x * (float) (Math.PI / 180.0)); @@ -299,13 +300,13 @@ public static LookingPosArgument parse(StringReader reader) throws CommandSyntax double d = readCoordinate(reader, cursor); if (!reader.canRead() || reader.peek() != ' ') { reader.setCursor(cursor); - throw Vec3ArgumentType.INCOMPLETE_EXCEPTION.createWithContext(reader); + throw Vec3Argument.INCOMPLETE_EXCEPTION.createWithContext(reader); } reader.skip(); double e = readCoordinate(reader, cursor); if (!reader.canRead() || reader.peek() != ' ') { reader.setCursor(cursor); - throw Vec3ArgumentType.INCOMPLETE_EXCEPTION.createWithContext(reader); + throw Vec3Argument.INCOMPLETE_EXCEPTION.createWithContext(reader); } reader.skip(); double f = readCoordinate(reader, cursor); @@ -314,11 +315,11 @@ public static LookingPosArgument parse(StringReader reader) throws CommandSyntax private static double readCoordinate(StringReader reader, int startingCursorPos) throws CommandSyntaxException { if (!reader.canRead()) { - throw CoordinateArgument.MISSING_COORDINATE.createWithContext(reader); + throw WorldCoordinate.MISSING_COORDINATE.createWithContext(reader); } if (reader.peek() != '^') { reader.setCursor(startingCursorPos); - throw Vec3ArgumentType.MIXED_COORDINATE_EXCEPTION.createWithContext(reader); + throw Vec3Argument.MIXED_COORDINATE_EXCEPTION.createWithContext(reader); } reader.skip(); return reader.canRead() && reader.peek() != ' ' ? reader.readDouble() : 0.0; diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/CommandArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/CommandArgumentType.java index a04494b394..6280e9a2e0 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/CommandArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/CommandArgumentType.java @@ -14,8 +14,8 @@ import com.mojang.brigadier.suggestion.SuggestionsBuilder; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.commands.Commands; -import net.minecraft.command.CommandSource; -import net.minecraft.text.Text; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; import java.util.Collection; import java.util.LinkedHashSet; @@ -25,7 +25,7 @@ public class CommandArgumentType implements ArgumentType { private static final CommandArgumentType INSTANCE = new CommandArgumentType(); - private static final DynamicCommandExceptionType NO_SUCH_COMMAND = new DynamicCommandExceptionType(name -> Text.literal("Command with name " + name + " doesn't exist.")); + private static final DynamicCommandExceptionType NO_SUCH_COMMAND = new DynamicCommandExceptionType(name -> Component.literal("Command with name " + name + " doesn't exist.")); private static final Collection EXAMPLES = Commands.COMMANDS.stream().limit(3).map(Command::getName).collect(Collectors.toList()); private CommandArgumentType() { @@ -68,7 +68,7 @@ public CompletableFuture listSuggestions(CommandContext cont suggestions.add(c.getName()); suggestions.addAll(c.getAliases()); } - return CommandSource.suggestMatching(suggestions, builder); + return SharedSuggestionProvider.suggestMatching(suggestions, builder); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/ComponentMapArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/ComponentMapArgumentType.java index 4ec8c2648a..bb173050bf 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/ComponentMapArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/ComponentMapArgumentType.java @@ -12,32 +12,32 @@ import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; import meteordevelopment.meteorclient.utils.misc.ComponentMapReader; -import net.minecraft.command.CommandRegistryAccess; -import net.minecraft.command.CommandSource; -import net.minecraft.component.ComponentMap; +import net.minecraft.commands.CommandBuildContext; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.core.component.DataComponentMap; import java.util.Collection; import java.util.List; import java.util.concurrent.CompletableFuture; -public class ComponentMapArgumentType implements ArgumentType { +public class ComponentMapArgumentType implements ArgumentType { private static final Collection EXAMPLES = List.of("{foo=bar}"); private final ComponentMapReader reader; - public ComponentMapArgumentType(CommandRegistryAccess commandRegistryAccess) { + public ComponentMapArgumentType(CommandBuildContext commandRegistryAccess) { this.reader = new ComponentMapReader(commandRegistryAccess); } - public static ComponentMapArgumentType componentMap(CommandRegistryAccess commandRegistryAccess) { + public static ComponentMapArgumentType componentMap(CommandBuildContext commandRegistryAccess) { return new ComponentMapArgumentType(commandRegistryAccess); } - public static ComponentMap getComponentMap(CommandContext context, String name) { - return context.getArgument(name, ComponentMap.class); + public static DataComponentMap getComponentMap(CommandContext context, String name) { + return context.getArgument(name, DataComponentMap.class); } @Override - public ComponentMap parse(StringReader reader) throws CommandSyntaxException { + public DataComponentMap parse(StringReader reader) throws CommandSyntaxException { return this.reader.consume(reader); } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/CompoundNbtTagArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/CompoundNbtTagArgumentType.java index fcfbe07d41..03067e2ba5 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/CompoundNbtTagArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/CompoundNbtTagArgumentType.java @@ -9,15 +9,19 @@ import com.mojang.brigadier.arguments.ArgumentType; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.StringNbtReader; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.TagParser; import java.util.Collection; import java.util.List; -import static net.minecraft.nbt.StringNbtReader.EXPECTED_COMPOUND; +// TODO(Ravel): ambiguous static import, members with name EXPECTED_COMPOUND have different new names +// +// TODO(Ravel): ambiguous static import, members with name EXPECTED_COMPOUND have different new names +// +import static net.minecraft.nbt.TagParser.EXPECTED_COMPOUND; -public class CompoundNbtTagArgumentType implements ArgumentType { +public class CompoundNbtTagArgumentType implements ArgumentType { private static final CompoundNbtTagArgumentType INSTANCE = new CompoundNbtTagArgumentType(); private static final Collection EXAMPLES = List.of("{foo:bar}", "{foo:[aa, bb],bar:15}"); @@ -25,14 +29,15 @@ public static CompoundNbtTagArgumentType create() { return INSTANCE; } - public static NbtCompound get(CommandContext context) { - return context.getArgument("nbt", NbtCompound.class); + public static CompoundTag get(CommandContext context) { + return context.getArgument("nbt", CompoundTag.class); } - private CompoundNbtTagArgumentType() {} + private CompoundNbtTagArgumentType() { + } @Override - public NbtCompound parse(StringReader reader) throws CommandSyntaxException { + public CompoundTag parse(StringReader reader) throws CommandSyntaxException { reader.skipWhitespace(); if (!reader.canRead()) { throw EXPECTED_COMPOUND.createWithContext(reader); @@ -42,8 +47,7 @@ public NbtCompound parse(StringReader reader) throws CommandSyntaxException { while (reader.canRead()) { if (reader.peek() == '{') { open++; - } - else if (reader.peek() == '}') { + } else if (reader.peek() == '}') { open--; } if (open == 0) @@ -52,9 +56,9 @@ else if (reader.peek() == '}') { } reader.expect('}'); b.append('}'); - return StringNbtReader.readCompound(b.toString() - .replace("$", "§") - .replace("§§", "$") + return TagParser.readCompound(b.toString() + .replace("$", "§") + .replace("§§", "$") ); } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/DirectionArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/DirectionArgumentType.java index d50efe6797..201e9e27f7 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/DirectionArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/DirectionArgumentType.java @@ -5,10 +5,10 @@ package meteordevelopment.meteorclient.commands.arguments; -import net.minecraft.command.argument.EnumArgumentType; -import net.minecraft.util.math.Direction; +import net.minecraft.commands.arguments.StringRepresentableArgument; +import net.minecraft.core.Direction; -public class DirectionArgumentType extends EnumArgumentType { +public class DirectionArgumentType extends StringRepresentableArgument { private static final DirectionArgumentType INSTANCE = new DirectionArgumentType(); private DirectionArgumentType() { diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/MacroArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/MacroArgumentType.java index 65201f4c16..6f3283eaaa 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/MacroArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/MacroArgumentType.java @@ -14,8 +14,8 @@ import com.mojang.brigadier.suggestion.SuggestionsBuilder; import meteordevelopment.meteorclient.systems.macros.Macro; import meteordevelopment.meteorclient.systems.macros.Macros; -import net.minecraft.command.CommandSource; -import net.minecraft.text.Text; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; import java.util.Collection; import java.util.concurrent.CompletableFuture; @@ -23,7 +23,7 @@ public class MacroArgumentType implements ArgumentType { private static final MacroArgumentType INSTANCE = new MacroArgumentType(); - private static final DynamicCommandExceptionType NO_SUCH_MACRO = new DynamicCommandExceptionType(name -> Text.literal("Macro with name " + name + " doesn't exist.")); + private static final DynamicCommandExceptionType NO_SUCH_MACRO = new DynamicCommandExceptionType(name -> Component.literal("Macro with name " + name + " doesn't exist.")); public static MacroArgumentType create() { return INSTANCE; @@ -33,7 +33,8 @@ public static Macro get(CommandContext context) { return context.getArgument("macro", Macro.class); } - private MacroArgumentType() {} + private MacroArgumentType() { + } @Override public Macro parse(StringReader reader) throws CommandSyntaxException { @@ -46,7 +47,7 @@ public Macro parse(StringReader reader) throws CommandSyntaxException { @Override public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { - return CommandSource.suggestMatching(Macros.get().getAll().stream().map(macro -> { + return SharedSuggestionProvider.suggestMatching(Macros.get().getAll().stream().map(macro -> { String name = macro.name.get(); if (name.contains(" ")) { name = "\"" + name.replace("\"", "\\\"") + "\""; diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/ModuleArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/ModuleArgumentType.java index 727cedcdcc..a0a9950200 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/ModuleArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/ModuleArgumentType.java @@ -14,8 +14,8 @@ import com.mojang.brigadier.suggestion.SuggestionsBuilder; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; -import net.minecraft.command.CommandSource; -import net.minecraft.text.Text; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; import java.util.Collection; import java.util.concurrent.CompletableFuture; @@ -23,13 +23,13 @@ public class ModuleArgumentType implements ArgumentType { private static final ModuleArgumentType INSTANCE = new ModuleArgumentType(); - private static final DynamicCommandExceptionType NO_SUCH_MODULE = new DynamicCommandExceptionType(name -> Text.literal("Module with name " + name + " doesn't exist.")); + private static final DynamicCommandExceptionType NO_SUCH_MODULE = new DynamicCommandExceptionType(name -> Component.literal("Module with name " + name + " doesn't exist.")); private static final Collection EXAMPLES = Modules.get().getAll() - .stream() - .limit(3) - .map(module -> module.name) - .collect(Collectors.toList()); + .stream() + .limit(3) + .map(module -> module.name) + .collect(Collectors.toList()); public static ModuleArgumentType create() { return INSTANCE; @@ -39,7 +39,8 @@ public static Module get(CommandContext context) { return context.getArgument("module", Module.class); } - private ModuleArgumentType() {} + private ModuleArgumentType() { + } @Override public Module parse(StringReader reader) throws CommandSyntaxException { @@ -52,7 +53,7 @@ public Module parse(StringReader reader) throws CommandSyntaxException { @Override public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { - return CommandSource.suggestMatching(Modules.get().getAll().stream().map(module -> module.name), builder); + return SharedSuggestionProvider.suggestMatching(Modules.get().getAll().stream().map(module -> module.name), builder); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/NotebotSongArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/NotebotSongArgumentType.java index 370689917c..784f3252bc 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/NotebotSongArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/NotebotSongArgumentType.java @@ -13,7 +13,7 @@ import com.mojang.brigadier.suggestion.SuggestionsBuilder; import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.utils.notebot.decoder.SongDecoders; -import net.minecraft.command.CommandSource; +import net.minecraft.commands.SharedSuggestionProvider; import java.io.IOException; import java.nio.file.Files; @@ -27,7 +27,8 @@ public static NotebotSongArgumentType create() { return INSTANCE; } - private NotebotSongArgumentType() {} + private NotebotSongArgumentType() { + } @Override public Path parse(StringReader reader) throws CommandSyntaxException { @@ -39,7 +40,7 @@ public Path parse(StringReader reader) throws CommandSyntaxException { @Override public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { try (var suggestions = Files.list(MeteorClient.FOLDER.toPath().resolve("notebot"))) { - return CommandSource.suggestMatching(suggestions + return SharedSuggestionProvider.suggestMatching(suggestions .filter(SongDecoders::hasDecoder) .map(path -> path.getFileName().toString()), builder diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/PlayerArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/PlayerArgumentType.java index d579ac27bc..972fe94303 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/PlayerArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/PlayerArgumentType.java @@ -12,9 +12,9 @@ import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import net.minecraft.command.CommandSource; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.text.Text; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.chat.Component; import java.util.Collection; import java.util.List; @@ -22,9 +22,9 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; -public class PlayerArgumentType implements ArgumentType { +public class PlayerArgumentType implements ArgumentType { private static final PlayerArgumentType INSTANCE = new PlayerArgumentType(); - private static final DynamicCommandExceptionType NO_SUCH_PLAYER = new DynamicCommandExceptionType(name -> Text.literal("Player with name " + name + " doesn't exist.")); + private static final DynamicCommandExceptionType NO_SUCH_PLAYER = new DynamicCommandExceptionType(name -> Component.literal("Player with name " + name + " doesn't exist.")); private static final Collection EXAMPLES = List.of("seasnail8169", "MineGame159"); @@ -32,18 +32,19 @@ public static PlayerArgumentType create() { return INSTANCE; } - public static PlayerEntity get(CommandContext context) { - return context.getArgument("player", PlayerEntity.class); + public static Player get(CommandContext context) { + return context.getArgument("player", Player.class); } - private PlayerArgumentType() {} + private PlayerArgumentType() { + } @Override - public PlayerEntity parse(StringReader reader) throws CommandSyntaxException { + public Player parse(StringReader reader) throws CommandSyntaxException { String argument = reader.readString(); - PlayerEntity playerEntity = null; + Player playerEntity = null; - for (PlayerEntity p : mc.world.getPlayers()) { + for (Player p : mc.world.getPlayers()) { if (p.getName().getString().equalsIgnoreCase(argument)) { playerEntity = p; break; @@ -56,7 +57,7 @@ public PlayerEntity parse(StringReader reader) throws CommandSyntaxException { @Override public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { - return CommandSource.suggestMatching(mc.world.getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getName().getString()), builder); + return SharedSuggestionProvider.suggestMatching(mc.world.getPlayers().stream().map(abstractClientPlayerEntity -> abstractClientPlayerEntity.getName().getString()), builder); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/PlayerListEntryArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/PlayerListEntryArgumentType.java index 8d195da02b..40717b65d6 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/PlayerListEntryArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/PlayerListEntryArgumentType.java @@ -12,9 +12,9 @@ import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.command.CommandSource; -import net.minecraft.text.Text; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; import java.util.Collection; import java.util.List; @@ -22,9 +22,9 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; -public class PlayerListEntryArgumentType implements ArgumentType { +public class PlayerListEntryArgumentType implements ArgumentType { private static final PlayerListEntryArgumentType INSTANCE = new PlayerListEntryArgumentType(); - private static final DynamicCommandExceptionType NO_SUCH_PLAYER = new DynamicCommandExceptionType(name -> Text.literal("Player list entry with name " + name + " doesn't exist.")); + private static final DynamicCommandExceptionType NO_SUCH_PLAYER = new DynamicCommandExceptionType(name -> Component.literal("Player list entry with name " + name + " doesn't exist.")); private static final Collection EXAMPLES = List.of("seasnail8169", "MineGame159"); @@ -32,18 +32,19 @@ public static PlayerListEntryArgumentType create() { return INSTANCE; } - public static PlayerListEntry get(CommandContext context) { - return context.getArgument("player", PlayerListEntry.class); + public static PlayerInfo get(CommandContext context) { + return context.getArgument("player", PlayerInfo.class); } - private PlayerListEntryArgumentType() {} + private PlayerListEntryArgumentType() { + } @Override - public PlayerListEntry parse(StringReader reader) throws CommandSyntaxException { + public PlayerInfo parse(StringReader reader) throws CommandSyntaxException { String argument = reader.readString(); - PlayerListEntry playerListEntry = null; + PlayerInfo playerListEntry = null; - for (PlayerListEntry p : mc.getNetworkHandler().getPlayerList()) { + for (PlayerInfo p : mc.getNetworkHandler().getPlayerList()) { if (p.getProfile().name().equalsIgnoreCase(argument)) { playerListEntry = p; break; @@ -56,7 +57,7 @@ public PlayerListEntry parse(StringReader reader) throws CommandSyntaxException @Override public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { - return CommandSource.suggestMatching(mc.getNetworkHandler().getPlayerList().stream().map(playerListEntry -> playerListEntry.getProfile().name()), builder); + return SharedSuggestionProvider.suggestMatching(mc.getNetworkHandler().getPlayerList().stream().map(playerListEntry -> playerListEntry.getProfile().name()), builder); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/ProfileArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/ProfileArgumentType.java index 56fb09e8dd..dc39a1d538 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/ProfileArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/ProfileArgumentType.java @@ -15,7 +15,7 @@ import com.mojang.brigadier.suggestion.SuggestionsBuilder; import meteordevelopment.meteorclient.systems.profiles.Profile; import meteordevelopment.meteorclient.systems.profiles.Profiles; -import net.minecraft.text.Text; +import net.minecraft.network.chat.Component; import java.util.Collection; import java.util.List; @@ -25,7 +25,7 @@ public class ProfileArgumentType implements ArgumentType { private static final ProfileArgumentType INSTANCE = new ProfileArgumentType(); - private static final DynamicCommandExceptionType NO_SUCH_PROFILE = new DynamicCommandExceptionType(name -> Text.literal("Profile with name " + name + " doesn't exist.")); + private static final DynamicCommandExceptionType NO_SUCH_PROFILE = new DynamicCommandExceptionType(name -> Component.literal("Profile with name " + name + " doesn't exist.")); private static final Collection EXAMPLES = List.of("pvp.meteorclient.com", "anarchy"); @@ -37,7 +37,8 @@ public static Profile get(CommandContext context) { return Profiles.get().get(context.getArgument("profile", String.class)); } - private ProfileArgumentType() {} + private ProfileArgumentType() { + } @Override public String parse(StringReader reader) throws CommandSyntaxException { diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/RegistryEntryReferenceArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/RegistryEntryReferenceArgumentType.java index ac740f28ce..53faa8353d 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/RegistryEntryReferenceArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/RegistryEntryReferenceArgumentType.java @@ -13,41 +13,41 @@ import com.mojang.brigadier.exceptions.Dynamic3CommandExceptionType; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import net.minecraft.client.MinecraftClient; -import net.minecraft.command.CommandSource; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.attribute.EntityAttribute; -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; -import net.minecraft.world.gen.structure.Structure; +import net.minecraft.client.Minecraft; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.Holder; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import net.minecraft.world.level.levelgen.structure.Structure; import java.util.Arrays; import java.util.Collection; import java.util.concurrent.CompletableFuture; -public class RegistryEntryReferenceArgumentType implements ArgumentType> { - private static final RegistryEntryReferenceArgumentType ENCHANTMENT = new RegistryEntryReferenceArgumentType<>(RegistryKeys.ENCHANTMENT); - private static final RegistryEntryReferenceArgumentType ENTITY_ATTRIBUTE = new RegistryEntryReferenceArgumentType<>(RegistryKeys.ATTRIBUTE); - private static final RegistryEntryReferenceArgumentType STRUCTURE = new RegistryEntryReferenceArgumentType<>(RegistryKeys.STRUCTURE); - private static final RegistryEntryReferenceArgumentType> ENTITY_TYPE = new RegistryEntryReferenceArgumentType<>(RegistryKeys.ENTITY_TYPE); - private static final RegistryEntryReferenceArgumentType STATUS_EFFECT = new RegistryEntryReferenceArgumentType<>(RegistryKeys.STATUS_EFFECT); +public class RegistryEntryReferenceArgumentType implements ArgumentType> { + private static final RegistryEntryReferenceArgumentType ENCHANTMENT = new RegistryEntryReferenceArgumentType<>(Registries.ENCHANTMENT); + private static final RegistryEntryReferenceArgumentType ENTITY_ATTRIBUTE = new RegistryEntryReferenceArgumentType<>(Registries.ATTRIBUTE); + private static final RegistryEntryReferenceArgumentType STRUCTURE = new RegistryEntryReferenceArgumentType<>(Registries.STRUCTURE); + private static final RegistryEntryReferenceArgumentType> ENTITY_TYPE = new RegistryEntryReferenceArgumentType<>(Registries.ENTITY_TYPE); + private static final RegistryEntryReferenceArgumentType STATUS_EFFECT = new RegistryEntryReferenceArgumentType<>(Registries.STATUS_EFFECT); private static final Collection EXAMPLES = Arrays.asList("foo", "foo:bar", "012"); public static final Dynamic2CommandExceptionType NOT_FOUND_EXCEPTION = new Dynamic2CommandExceptionType( - (element, type) -> Text.stringifiedTranslatable("argument.resource.not_found", element, type) + (element, type) -> Component.stringifiedTranslatable("argument.resource.not_found", element, type) ); public static final Dynamic3CommandExceptionType INVALID_TYPE_EXCEPTION = new Dynamic3CommandExceptionType( - (element, type, expectedType) -> Text.stringifiedTranslatable("argument.resource.invalid_type", element, type, expectedType) + (element, type, expectedType) -> Component.stringifiedTranslatable("argument.resource.invalid_type", element, type, expectedType) ); - private final RegistryKey> registryRef; + private final ResourceKey> registryRef; - private RegistryEntryReferenceArgumentType(RegistryKey> registryRef) { + private RegistryEntryReferenceArgumentType(ResourceKey> registryRef) { this.registryRef = registryRef; } @@ -55,7 +55,7 @@ public static RegistryEntryReferenceArgumentType enchantment() { return ENCHANTMENT; } - public static RegistryEntryReferenceArgumentType entityAttribute() { + public static RegistryEntryReferenceArgumentType entityAttribute() { return ENTITY_ATTRIBUTE; } @@ -67,34 +67,34 @@ public static RegistryEntryReferenceArgumentType> entityType() { return ENTITY_TYPE; } - public static RegistryEntryReferenceArgumentType statusEffect() { + public static RegistryEntryReferenceArgumentType statusEffect() { return STATUS_EFFECT; } - public static RegistryEntry.Reference getEnchantment(CommandContext context, String name) throws CommandSyntaxException { - return getRegistryEntry(context, name, RegistryKeys.ENCHANTMENT); + public static Holder.Reference getEnchantment(CommandContext context, String name) throws CommandSyntaxException { + return getRegistryEntry(context, name, Registries.ENCHANTMENT); } - public static RegistryEntry.Reference getEntityAttribute(CommandContext context, String name) throws CommandSyntaxException { - return getRegistryEntry(context, name, RegistryKeys.ATTRIBUTE); + public static Holder.Reference getEntityAttribute(CommandContext context, String name) throws CommandSyntaxException { + return getRegistryEntry(context, name, Registries.ATTRIBUTE); } - public static RegistryEntry.Reference getStructure(CommandContext context, String name) throws CommandSyntaxException { - return getRegistryEntry(context, name, RegistryKeys.STRUCTURE); + public static Holder.Reference getStructure(CommandContext context, String name) throws CommandSyntaxException { + return getRegistryEntry(context, name, Registries.STRUCTURE); } - public static RegistryEntry.Reference> getEntityType(CommandContext context, String name) throws CommandSyntaxException { - return getRegistryEntry(context, name, RegistryKeys.ENTITY_TYPE); + public static Holder.Reference> getEntityType(CommandContext context, String name) throws CommandSyntaxException { + return getRegistryEntry(context, name, Registries.ENTITY_TYPE); } - public static RegistryEntry.Reference getStatusEffect(CommandContext context, String name) throws CommandSyntaxException { - return getRegistryEntry(context, name, RegistryKeys.STATUS_EFFECT); + public static Holder.Reference getStatusEffect(CommandContext context, String name) throws CommandSyntaxException { + return getRegistryEntry(context, name, Registries.STATUS_EFFECT); } @SuppressWarnings("unchecked") - private static RegistryEntry.Reference getRegistryEntry(CommandContext context, String name, RegistryKey> registryRef) throws CommandSyntaxException { - RegistryEntry.Reference reference = context.getArgument(name, RegistryEntry.Reference.class); - RegistryKey registryKey = reference.registryKey(); + private static Holder.Reference getRegistryEntry(CommandContext context, String name, ResourceKey> registryRef) throws CommandSyntaxException { + Holder.Reference reference = context.getArgument(name, Holder.Reference.class); + ResourceKey registryKey = reference.registryKey(); if (registryKey.isOf(registryRef)) { return reference; } else { @@ -103,10 +103,10 @@ private static RegistryEntry.Reference getRegistryEntry(CommandContext } @Override - public RegistryEntry.Reference parse(StringReader reader) throws CommandSyntaxException { + public Holder.Reference parse(StringReader reader) throws CommandSyntaxException { Identifier identifier = Identifier.fromCommandInput(reader); - RegistryKey registryKey = RegistryKey.of(this.registryRef, identifier); - return MinecraftClient.getInstance().getNetworkHandler().getRegistryManager() + ResourceKey registryKey = ResourceKey.of(this.registryRef, identifier); + return Minecraft.getInstance().getNetworkHandler().getRegistryManager() .getOrThrow(this.registryRef) .getOptional(registryKey) .orElseThrow(() -> NOT_FOUND_EXCEPTION.createWithContext(reader, identifier, this.registryRef.getValue())); @@ -114,7 +114,7 @@ public RegistryEntry.Reference parse(StringReader reader) throws CommandSynta @Override public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { - return CommandSource.suggestIdentifiers(MinecraftClient.getInstance().getNetworkHandler().getRegistryManager().getOrThrow(this.registryRef).streamKeys().map(RegistryKey::getValue), builder); + return SharedSuggestionProvider.suggestIdentifiers(Minecraft.getInstance().getNetworkHandler().getRegistryManager().getOrThrow(this.registryRef).streamKeys().map(ResourceKey::getValue), builder); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/SettingArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/SettingArgumentType.java index 0fe0724062..f7661c8a13 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/SettingArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/SettingArgumentType.java @@ -16,15 +16,15 @@ import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.Settings; import meteordevelopment.meteorclient.systems.modules.Module; -import net.minecraft.command.CommandSource; -import net.minecraft.text.Text; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; import java.util.concurrent.CompletableFuture; import java.util.stream.Stream; public class SettingArgumentType implements ArgumentType { private static final SettingArgumentType INSTANCE = new SettingArgumentType(); - private static final DynamicCommandExceptionType NO_SUCH_SETTING = new DynamicCommandExceptionType(name -> Text.literal("No such setting '" + name + "'.")); + private static final DynamicCommandExceptionType NO_SUCH_SETTING = new DynamicCommandExceptionType(name -> Component.literal("No such setting '" + name + "'.")); public static SettingArgumentType create() { return INSTANCE; @@ -45,7 +45,8 @@ public static Setting get(CommandContext context, Settings settings) throw return setting; } - private SettingArgumentType() {} + private SettingArgumentType() { + } @Override public String parse(StringReader reader) throws CommandSyntaxException { @@ -62,6 +63,6 @@ public static CompletableFuture listSuggestions(SuggestionsBuilder .flatMap(sg -> Streams.stream(sg.iterator())) .map(setting -> setting.name); - return CommandSource.suggestMatching(stream, builder); + return SharedSuggestionProvider.suggestMatching(stream, builder); } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/SettingValueArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/SettingValueArgumentType.java index 1ab864e0fc..f1239e3730 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/SettingValueArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/SettingValueArgumentType.java @@ -13,8 +13,8 @@ import com.mojang.brigadier.suggestion.SuggestionsBuilder; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.Settings; -import net.minecraft.command.CommandSource; -import net.minecraft.util.Identifier; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.resources.Identifier; import org.jetbrains.annotations.NotNull; import java.util.concurrent.CompletableFuture; @@ -30,7 +30,8 @@ public static String get(CommandContext context) { return context.getArgument("value", String.class); } - private SettingValueArgumentType() {} + private SettingValueArgumentType() { + } @Override public String parse(StringReader reader) throws CommandSyntaxException { @@ -67,9 +68,9 @@ public static CompletableFuture listSuggestions(CommandContext< public static CompletableFuture suggest(SuggestionsBuilder builder, @NotNull Setting setting) { Iterable identifiers = setting.getIdentifierSuggestions(); if (identifiers != null) { - return CommandSource.suggestIdentifiers(identifiers, builder); + return SharedSuggestionProvider.suggestIdentifiers(identifiers, builder); } - return CommandSource.suggestMatching(setting.getSuggestions(), builder); + return SharedSuggestionProvider.suggestMatching(setting.getSuggestions(), builder); } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/arguments/WaypointArgumentType.java b/src/main/java/meteordevelopment/meteorclient/commands/arguments/WaypointArgumentType.java index ee5d2cbce5..f1f299077d 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/arguments/WaypointArgumentType.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/arguments/WaypointArgumentType.java @@ -14,8 +14,8 @@ import com.mojang.brigadier.suggestion.SuggestionsBuilder; import meteordevelopment.meteorclient.systems.waypoints.Waypoint; import meteordevelopment.meteorclient.systems.waypoints.Waypoints; -import net.minecraft.command.CommandSource; -import net.minecraft.text.Text; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; import java.util.ArrayList; import java.util.Collection; @@ -25,7 +25,7 @@ public class WaypointArgumentType implements ArgumentType { private static final WaypointArgumentType GREEDY = new WaypointArgumentType(true); private static final WaypointArgumentType QUOTED = new WaypointArgumentType(false); - private static final DynamicCommandExceptionType NO_SUCH_WAYPOINT = new DynamicCommandExceptionType(name -> Text.literal("Waypoint with name '" + name + "' doesn't exist.")); + private static final DynamicCommandExceptionType NO_SUCH_WAYPOINT = new DynamicCommandExceptionType(name -> Component.literal("Waypoint with name '" + name + "' doesn't exist.")); private final boolean greedyString; private WaypointArgumentType(boolean greedyString) { @@ -62,7 +62,7 @@ public String parse(StringReader reader) throws CommandSyntaxException { @Override public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { - return CommandSource.suggestMatching(getExamples(), builder); + return SharedSuggestionProvider.suggestMatching(getExamples(), builder); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/BindCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/BindCommand.java index 3ef50aa80d..84b51a61d2 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/BindCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/BindCommand.java @@ -10,7 +10,7 @@ import meteordevelopment.meteorclient.commands.arguments.ModuleArgumentType; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; -import net.minecraft.command.CommandSource; +import net.minecraft.commands.SharedSuggestionProvider; public class BindCommand extends Command { public BindCommand() { @@ -18,7 +18,7 @@ public BindCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(argument("module", ModuleArgumentType.create()).executes(context -> { Module module = context.getArgument("module", Module.class); Modules.get().setModuleToBind(module); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java index 0bc90a5ea4..6c1ead22c6 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/BindsCommand.java @@ -11,11 +11,11 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.command.CommandSource; -import net.minecraft.text.HoverEvent; -import net.minecraft.text.MutableText; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.HoverEvent; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; import java.util.List; @@ -25,7 +25,7 @@ public BindsCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { // Modules List modules = Modules.get().getAll().stream() @@ -37,16 +37,16 @@ public void build(LiteralArgumentBuilder builder) { for (Module module : modules) { HoverEvent hoverEvent = new HoverEvent.ShowText(getTooltip(module)); - MutableText text = Text.literal(module.title).formatted(Formatting.WHITE); + MutableComponent text = MutableComponent.literal(module.title).formatted(ChatFormatting.WHITE); text.setStyle(text.getStyle().withHoverEvent(hoverEvent)); - MutableText sep = Text.literal(" - "); + MutableComponent sep = MutableComponent.literal(" - "); sep.setStyle(sep.getStyle().withHoverEvent(hoverEvent)); - text.append(sep.formatted(Formatting.GRAY)); + text.append(sep.formatted(ChatFormatting.GRAY)); - MutableText key = Text.literal(module.keybind.toString()); + MutableComponent key = MutableComponent.literal(module.keybind.toString()); key.setStyle(key.getStyle().withHoverEvent(hoverEvent)); - text.append(key.formatted(Formatting.GRAY)); + text.append(key.formatted(ChatFormatting.GRAY)); ChatUtils.sendMsg(text); } @@ -55,9 +55,9 @@ public void build(LiteralArgumentBuilder builder) { }); } - private MutableText getTooltip(Module module) { - MutableText tooltip = Text.literal(Utils.nameToTitle(module.title)).formatted(Formatting.BLUE, Formatting.BOLD).append("\n\n"); - tooltip.append(Text.literal(module.description).formatted(Formatting.WHITE)); + private MutableComponent getTooltip(Module module) { + MutableComponent tooltip = MutableComponent.literal(Utils.nameToTitle(module.title)).formatted(ChatFormatting.BLUE, ChatFormatting.BOLD).append("\n\n"); + tooltip.append(MutableComponent.literal(module.description).formatted(ChatFormatting.WHITE)); return tooltip; } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java index e35078c472..36df28eb52 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/CommandsCommand.java @@ -11,12 +11,12 @@ import meteordevelopment.meteorclient.systems.config.Config; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.command.CommandSource; -import net.minecraft.text.ClickEvent; -import net.minecraft.text.HoverEvent; -import net.minecraft.text.MutableText; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.ClickEvent; +import net.minecraft.network.chat.HoverEvent; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; public class CommandsCommand extends Command { public CommandsCommand() { @@ -24,11 +24,11 @@ public CommandsCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { ChatUtils.info("--- Commands ((highlight)%d(default)) ---", Commands.COMMANDS.size()); - MutableText commands = Text.literal(""); + MutableComponent commands = MutableComponent.literal(""); Commands.COMMANDS.forEach(command -> commands.append(getCommandText(command))); ChatUtils.sendMsg(commands); @@ -36,13 +36,13 @@ public void build(LiteralArgumentBuilder builder) { }); } - private MutableText getCommandText(Command command) { + private MutableComponent getCommandText(Command command) { // Hover tooltip - MutableText tooltip = Text.literal(""); + MutableComponent tooltip = MutableComponent.literal(""); - tooltip.append(Text.literal(Utils.nameToTitle(command.getName())).formatted(Formatting.BLUE, Formatting.BOLD)).append("\n"); + tooltip.append(MutableComponent.literal(Utils.nameToTitle(command.getName())).formatted(ChatFormatting.BLUE, ChatFormatting.BOLD)).append("\n"); - MutableText aliases = Text.literal(Config.get().prefix.get() + command.getName()); + MutableComponent aliases = MutableComponent.literal(Config.get().prefix.get() + command.getName()); if (!command.getAliases().isEmpty()) { aliases.append(", "); for (String alias : command.getAliases()) { @@ -51,14 +51,14 @@ private MutableText getCommandText(Command command) { if (!alias.equals(command.getAliases().getLast())) aliases.append(", "); } } - tooltip.append(aliases.formatted(Formatting.GRAY)).append("\n\n"); + tooltip.append(aliases.formatted(ChatFormatting.GRAY)).append("\n\n"); - tooltip.append(Text.literal(command.getDescription()).formatted(Formatting.WHITE)); + tooltip.append(MutableComponent.literal(command.getDescription()).formatted(ChatFormatting.WHITE)); // Text - MutableText text = Text.literal(Utils.nameToTitle(command.getName())); + MutableComponent text = MutableComponent.literal(Utils.nameToTitle(command.getName())); if (command != Commands.COMMANDS.getLast()) - text.append(Text.literal(", ").formatted(Formatting.GRAY)); + text.append(MutableComponent.literal(", ").formatted(ChatFormatting.GRAY)); text.setStyle(text .getStyle() .withHoverEvent(new HoverEvent.ShowText(tooltip)) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/DamageCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/DamageCommand.java index 973c10bb0c..d1ce940e7a 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/DamageCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/DamageCommand.java @@ -12,20 +12,20 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.NoFall; import meteordevelopment.meteorclient.systems.modules.player.AntiHunger; -import net.minecraft.command.CommandSource; -import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; -import net.minecraft.text.Text; -import net.minecraft.util.math.Vec3d; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; +import net.minecraft.network.chat.Component; +import net.minecraft.world.phys.Vec3; public class DamageCommand extends Command { - private final static SimpleCommandExceptionType INVULNERABLE = new SimpleCommandExceptionType(Text.literal("You are invulnerable.")); + private final static SimpleCommandExceptionType INVULNERABLE = new SimpleCommandExceptionType(Component.literal("You are invulnerable.")); public DamageCommand() { super("damage", "Damages self", "dmg"); } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(argument("damage", IntegerArgumentType.integer(1, 7)).executes(context -> { int amount = IntegerArgumentType.getInteger(context, "damage"); @@ -46,9 +46,9 @@ private void damagePlayer(int amount) { boolean antiHunger = Modules.get().isActive(AntiHunger.class); if (antiHunger) Modules.get().get(AntiHunger.class).toggle(); - Vec3d pos = mc.player.getEntityPos(); + Vec3 pos = mc.player.getEntityPos(); - for(int i = 0; i < 80; i++) { + for (int i = 0; i < 80; i++) { sendPositionPacket(pos.x, pos.y + amount + 2.1, pos.z, false); sendPositionPacket(pos.x, pos.y + 0.05, pos.z, false); } @@ -60,6 +60,6 @@ private void damagePlayer(int amount) { } private void sendPositionPacket(double x, double y, double z, boolean onGround) { - mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(x, y, z, onGround, mc.player.horizontalCollision)); + mc.player.networkHandler.sendPacket(new ServerboundMovePlayerPacket.PositionAndOnGround(x, y, z, onGround, mc.player.horizontalCollision)); } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java index f43585276a..5f687dbdf9 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/DisconnectCommand.java @@ -8,10 +8,10 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import meteordevelopment.meteorclient.commands.Command; -import net.minecraft.command.CommandSource; -import net.minecraft.network.packet.s2c.common.DisconnectS2CPacket; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.protocol.common.ClientboundDisconnectPacket; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; public class DisconnectCommand extends Command { public DisconnectCommand() { @@ -19,14 +19,14 @@ public DisconnectCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { - mc.player.networkHandler.onDisconnect(new DisconnectS2CPacket(Text.literal("%s[%sDisconnectCommand%s] Disconnected by user.".formatted(Formatting.GRAY, Formatting.BLUE, Formatting.GRAY)))); + mc.player.networkHandler.onDisconnect(new DisconnectS2CPacket(Component.literal("%s[%sDisconnectCommand%s] Disconnected by user.".formatted(ChatFormatting.GRAY, ChatFormatting.BLUE, ChatFormatting.GRAY)))); return SINGLE_SUCCESS; }); builder.then(argument("reason", StringArgumentType.greedyString()).executes(context -> { - mc.player.networkHandler.onDisconnect(new DisconnectS2CPacket(Text.literal(StringArgumentType.getString(context, "reason")))); + mc.player.networkHandler.onDisconnect(new DisconnectS2CPacket(Component.literal(StringArgumentType.getString(context, "reason")))); return SINGLE_SUCCESS; })); } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/DismountCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/DismountCommand.java index 1cbdfb84cd..6193c410f3 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/DismountCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/DismountCommand.java @@ -7,9 +7,9 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import meteordevelopment.meteorclient.commands.Command; -import net.minecraft.command.CommandSource; -import net.minecraft.network.packet.c2s.play.PlayerInputC2SPacket; -import net.minecraft.util.PlayerInput; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.protocol.game.ServerboundPlayerInputPacket; +import net.minecraft.world.entity.player.Input; public class DismountCommand extends Command { public DismountCommand() { @@ -17,9 +17,9 @@ public DismountCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { - PlayerInput sneak = new PlayerInput(false, false, false, false, false, true, false); + Input sneak = new PlayerInput(false, false, false, false, false, true, false); mc.getNetworkHandler().sendPacket(new PlayerInputC2SPacket(sneak)); return SINGLE_SUCCESS; }); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java index 4816bedd09..c854846fa4 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/DropCommand.java @@ -12,25 +12,25 @@ import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.utils.player.InvUtils; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.command.CommandSource; -import net.minecraft.command.argument.ItemStackArgumentType; -import net.minecraft.component.type.AttributeModifierSlot; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.text.Text; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.commands.arguments.item.ItemArgument; +import net.minecraft.world.entity.EquipmentSlotGroup; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.network.chat.Component; public class DropCommand extends Command { - private static final SimpleCommandExceptionType NOT_SPECTATOR = new SimpleCommandExceptionType(Text.literal("Can't drop items while in spectator.")); - private static final SimpleCommandExceptionType NO_SUCH_ITEM = new SimpleCommandExceptionType(Text.literal("Could not find an item with that name!")); + private static final SimpleCommandExceptionType NOT_SPECTATOR = new SimpleCommandExceptionType(Component.literal("Can't drop items while in spectator.")); + private static final SimpleCommandExceptionType NO_SUCH_ITEM = new SimpleCommandExceptionType(Component.literal("Could not find an item with that name!")); public DropCommand() { super("drop", "Automatically drops specified items."); } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { // Main Hand builder.then(literal("hand").executes(context -> drop(player -> player.dropSelectedItem(true)))); @@ -61,7 +61,7 @@ public void build(LiteralArgumentBuilder builder) { // Armor builder.then(literal("armor").executes(context -> drop(player -> { - for (EquipmentSlot equipmentSlot : AttributeModifierSlot.ARMOR) { + for (EquipmentSlot equipmentSlot : EquipmentSlotGroup.ARMOR) { if (equipmentSlot.getType() == EquipmentSlot.Type.HUMANOID_ARMOR) { InvUtils.drop().slotArmor(equipmentSlot.getEntitySlotId()); } @@ -69,7 +69,7 @@ public void build(LiteralArgumentBuilder builder) { }))); // Specific item - builder.then(argument("item", ItemStackArgumentType.itemStack(REGISTRY_ACCESS)) + builder.then(argument("item", ItemArgument.itemStack(REGISTRY_ACCESS)) .executes(context -> drop(player -> { dropItem(player, context, Integer.MAX_VALUE); })) @@ -81,8 +81,8 @@ public void build(LiteralArgumentBuilder builder) { ); } - private void dropItem(ClientPlayerEntity player, CommandContext context, int amount) throws CommandSyntaxException { - ItemStack stack = ItemStackArgumentType.getItemStackArgument(context, "item").createStack(1, false); + private void dropItem(LocalPlayer player, CommandContext context, int amount) throws CommandSyntaxException { + ItemStack stack = ItemArgument.getItemStackArgument(context, "item").createStack(1, false); if (stack == null || stack.getItem() == Items.AIR) throw NO_SUCH_ITEM.create(); for (int i = 0; i < player.getInventory().size() && amount > 0; i++) { @@ -112,6 +112,6 @@ private int drop(PlayerConsumer consumer) throws CommandSyntaxException { // Separate interface so exceptions can be thrown from it (which is not the case for Consumer) @FunctionalInterface private interface PlayerConsumer { - void accept(ClientPlayerEntity player) throws CommandSyntaxException; + void accept(LocalPlayer player) throws CommandSyntaxException; } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java index 7eb9e6b584..86576d8847 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/EnchantCommand.java @@ -13,26 +13,26 @@ import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.commands.arguments.RegistryEntryReferenceArgumentType; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.client.gui.screen.ingame.InventoryScreen; -import net.minecraft.command.CommandSource; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.text.Text; +import net.minecraft.client.gui.screens.inventory.InventoryScreen; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.registries.Registries; +import net.minecraft.core.Holder; +import net.minecraft.network.chat.Component; import java.util.function.ToIntFunction; public class EnchantCommand extends Command { - private static final SimpleCommandExceptionType NOT_IN_CREATIVE = new SimpleCommandExceptionType(Text.literal("You must be in creative mode to use this.")); - private static final SimpleCommandExceptionType NOT_HOLDING_ITEM = new SimpleCommandExceptionType(Text.literal("You need to hold some item to enchant.")); + private static final SimpleCommandExceptionType NOT_IN_CREATIVE = new SimpleCommandExceptionType(Component.literal("You must be in creative mode to use this.")); + private static final SimpleCommandExceptionType NOT_HOLDING_ITEM = new SimpleCommandExceptionType(Component.literal("You need to hold some item to enchant.")); public EnchantCommand() { super("enchant", "Enchants the item in your hand. REQUIRES Creative mode."); } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(literal("one").then(argument("enchantment", RegistryEntryReferenceArgumentType.enchantment()) .then(literal("level").then(argument("level", IntegerArgumentType.integer()).executes(context -> { one(context, enchantment -> context.getArgument("level", Integer.class)); @@ -76,7 +76,7 @@ public void build(LiteralArgumentBuilder builder) { builder.then(literal("remove").then(argument("enchantment", RegistryEntryReferenceArgumentType.enchantment()).executes(context -> { ItemStack itemStack = tryGetItemStack(); - RegistryEntry.Reference enchantment = RegistryEntryReferenceArgumentType.getEnchantment(context, "enchantment"); + Holder.Reference enchantment = RegistryEntryReferenceArgumentType.getEnchantment(context, "enchantment"); Utils.removeEnchantment(itemStack, enchantment.value()); syncItem(); @@ -84,10 +84,10 @@ public void build(LiteralArgumentBuilder builder) { }))); } - private void one(CommandContext context, ToIntFunction level) throws CommandSyntaxException { + private void one(CommandContext context, ToIntFunction level) throws CommandSyntaxException { ItemStack itemStack = tryGetItemStack(); - RegistryEntry.Reference enchantment = RegistryEntryReferenceArgumentType.getEnchantment(context, "enchantment"); + Holder.Reference enchantment = RegistryEntryReferenceArgumentType.getEnchantment(context, "enchantment"); Utils.addEnchantment(itemStack, enchantment, level.applyAsInt(enchantment.value())); syncItem(); @@ -96,7 +96,7 @@ private void one(CommandContext context, ToIntFunction level) throws CommandSyntaxException { ItemStack itemStack = tryGetItemStack(); - mc.getNetworkHandler().getRegistryManager().getOptional(RegistryKeys.ENCHANTMENT).ifPresent(registry -> { + mc.getNetworkHandler().getRegistryManager().getOptional(Registries.ENCHANTMENT).ifPresent(registry -> { registry.streamEntries().forEach(enchantment -> { if (!onlyPossible || enchantment.value().isAcceptableItem(itemStack)) { Utils.addEnchantment(itemStack, enchantment, level.applyAsInt(enchantment.value())); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/EnderChestCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/EnderChestCommand.java index 818bf8bb27..5bb0d8cf8b 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/EnderChestCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/EnderChestCommand.java @@ -8,9 +8,9 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.command.CommandSource; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; public class EnderChestCommand extends Command { public EnderChestCommand() { @@ -18,7 +18,7 @@ public EnderChestCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { Utils.openContainer(Items.ENDER_CHEST.getDefaultStack(), new ItemStack[27], true); return SINGLE_SUCCESS; diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java index 5374e1f503..dcf90dfea0 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/FakePlayerCommand.java @@ -14,7 +14,7 @@ import meteordevelopment.meteorclient.utils.entity.fakeplayer.FakePlayerEntity; import meteordevelopment.meteorclient.utils.entity.fakeplayer.FakePlayerManager; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.command.CommandSource; +import net.minecraft.commands.SharedSuggestionProvider; public class FakePlayerCommand extends Command { public FakePlayerCommand() { @@ -22,7 +22,7 @@ public FakePlayerCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(literal("add") .executes(context -> { FakePlayer fakePlayer = Modules.get().get(FakePlayer.class); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/FovCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/FovCommand.java index dd612d030a..9ef0e42c78 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/FovCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/FovCommand.java @@ -9,7 +9,7 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.mixininterface.ISimpleOption; -import net.minecraft.command.CommandSource; +import net.minecraft.commands.SharedSuggestionProvider; public class FovCommand extends Command { public FovCommand() { @@ -17,7 +17,7 @@ public FovCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(argument("fov", IntegerArgumentType.integer(1, 180)).executes(context -> { ((ISimpleOption) (Object) mc.options.getFov()).meteor$set(context.getArgument("fov", Integer.class)); return SINGLE_SUCCESS; diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/FriendsCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/FriendsCommand.java index 23ae209cad..73b549b101 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/FriendsCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/FriendsCommand.java @@ -13,8 +13,8 @@ import meteordevelopment.meteorclient.systems.friends.Friend; import meteordevelopment.meteorclient.systems.friends.Friends; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.command.CommandSource; -import net.minecraft.util.Formatting; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.ChatFormatting; public class FriendsCommand extends Command { public FriendsCommand() { @@ -22,7 +22,7 @@ public FriendsCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(literal("add") .then(argument("player", PlayerListEntryArgumentType.create()) .executes(context -> { @@ -30,9 +30,8 @@ public void build(LiteralArgumentBuilder builder) { Friend friend = new Friend(profile.name(), profile.id()); if (Friends.get().add(friend)) { - ChatUtils.sendMsg(friend.hashCode(), Formatting.GRAY, "Added (highlight)%s (default)to friends.".formatted(friend.getName())); - } - else error("Already friends with that player."); + ChatUtils.sendMsg(friend.hashCode(), ChatFormatting.GRAY, "Added (highlight)%s (default)to friends.".formatted(friend.getName())); + } else error("Already friends with that player."); return SINGLE_SUCCESS; }) @@ -49,9 +48,8 @@ public void build(LiteralArgumentBuilder builder) { } if (Friends.get().remove(friend)) { - ChatUtils.sendMsg(friend.hashCode(), Formatting.GRAY, "Removed (highlight)%s (default)from friends.".formatted(friend.getName())); - } - else error("Failed to remove that friend."); + ChatUtils.sendMsg(friend.hashCode(), ChatFormatting.GRAY, "Removed (highlight)%s (default)from friends.".formatted(friend.getName())); + } else error("Failed to remove that friend."); return SINGLE_SUCCESS; }) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/GamemodeCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/GamemodeCommand.java index 9033346af8..b1b9276add 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/GamemodeCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/GamemodeCommand.java @@ -7,8 +7,8 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import meteordevelopment.meteorclient.commands.Command; -import net.minecraft.command.CommandSource; -import net.minecraft.world.GameMode; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.world.level.GameType; public class GamemodeCommand extends Command { public GamemodeCommand() { @@ -16,8 +16,8 @@ public GamemodeCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { - for (GameMode gameMode : GameMode.values()) { + public void build(LiteralArgumentBuilder builder) { + for (GameType gameMode : GameType.values()) { builder.then(literal(gameMode.getId()).executes(context -> { mc.interactionManager.setGameMode(gameMode); return SINGLE_SUCCESS; diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java index 94150a58b7..f29ccc49fc 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/GiveCommand.java @@ -12,33 +12,33 @@ import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.utils.player.FindItemResult; import meteordevelopment.meteorclient.utils.player.InvUtils; -import net.minecraft.command.CommandSource; -import net.minecraft.command.argument.ItemStackArgumentType; -import net.minecraft.item.ItemStack; -import net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket; -import net.minecraft.text.Text; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.commands.arguments.item.ItemArgument; +import net.minecraft.world.item.ItemStack; +import net.minecraft.network.protocol.game.ServerboundSetCreativeModeSlotPacket; +import net.minecraft.network.chat.Component; public class GiveCommand extends Command { - private final static SimpleCommandExceptionType NOT_IN_CREATIVE = new SimpleCommandExceptionType(Text.literal("You must be in creative mode to use this.")); - private final static SimpleCommandExceptionType NO_SPACE = new SimpleCommandExceptionType(Text.literal("No space in hotbar.")); + private final static SimpleCommandExceptionType NOT_IN_CREATIVE = new SimpleCommandExceptionType(Component.literal("You must be in creative mode to use this.")); + private final static SimpleCommandExceptionType NO_SPACE = new SimpleCommandExceptionType(Component.literal("No space in hotbar.")); public GiveCommand() { super("give", "Gives you any item."); } @Override - public void build(LiteralArgumentBuilder builder) { - builder.then(argument("item", ItemStackArgumentType.itemStack(REGISTRY_ACCESS)).executes(context -> { + public void build(LiteralArgumentBuilder builder) { + builder.then(argument("item", ItemArgument.itemStack(REGISTRY_ACCESS)).executes(context -> { if (!mc.player.getAbilities().creativeMode) throw NOT_IN_CREATIVE.create(); - ItemStack item = ItemStackArgumentType.getItemStackArgument(context, "item").createStack(1, false); + ItemStack item = ItemArgument.getItemStackArgument(context, "item").createStack(1, false); giveItem(item); return SINGLE_SUCCESS; }).then(argument("number", IntegerArgumentType.integer(1, 99)).executes(context -> { if (!mc.player.getAbilities().creativeMode) throw NOT_IN_CREATIVE.create(); - ItemStack item = ItemStackArgumentType.getItemStackArgument(context, "item").createStack(IntegerArgumentType.getInteger(context, "number"), true); + ItemStack item = ItemArgument.getItemStackArgument(context, "item").createStack(IntegerArgumentType.getInteger(context, "number"), true); giveItem(item); return SINGLE_SUCCESS; diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/HClipCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/HClipCommand.java index 2af1daa8f3..06360c6e18 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/HClipCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/HClipCommand.java @@ -8,9 +8,9 @@ import com.mojang.brigadier.arguments.DoubleArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import meteordevelopment.meteorclient.commands.Command; -import net.minecraft.command.CommandSource; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.Vec3d; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; public class HClipCommand extends Command { public HClipCommand() { @@ -18,10 +18,10 @@ public HClipCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(argument("blocks", DoubleArgumentType.doubleArg()).executes(context -> { double blocks = context.getArgument("blocks", Double.class); - Vec3d forward = Vec3d.fromPolar(0, mc.player.getYaw()).normalize(); + Vec3 forward = Vec3.fromPolar(0, mc.player.getYaw()).normalize(); if (mc.player.hasVehicle()) { Entity vehicle = mc.player.getVehicle(); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/HelpCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/HelpCommand.java index 6e68226c80..dcf13cf6ef 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/HelpCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/HelpCommand.java @@ -11,10 +11,10 @@ import meteordevelopment.meteorclient.commands.Commands; import meteordevelopment.meteorclient.commands.arguments.CommandArgumentType; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.command.CommandSource; -import net.minecraft.text.MutableText; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; import java.util.Map; @@ -24,7 +24,7 @@ public HelpCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(argument("command", CommandArgumentType.create()).executes(context -> { showHelp(CommandArgumentType.get(context)); return SINGLE_SUCCESS; @@ -37,38 +37,38 @@ public void build(LiteralArgumentBuilder builder) { } private void showHelp(Command cmd) { - MutableText msg = Text.literal(""); - msg.append(Text.literal("Help for ").formatted(Formatting.GRAY).append(Text.literal(cmd.getName()).formatted(Formatting.YELLOW))); - msg.append(Text.literal("\n ")).append(Text.literal("Description: ").formatted(Formatting.GRAY).append(Text.literal(cmd.getDescription()).formatted(Formatting.WHITE))); + MutableComponent msg = MutableComponent.literal(""); + msg.append(MutableComponent.literal("Help for ").formatted(ChatFormatting.GRAY).append(MutableComponent.literal(cmd.getName()).formatted(ChatFormatting.YELLOW))); + msg.append(MutableComponent.literal("\n ")).append(MutableComponent.literal("Description: ").formatted(ChatFormatting.GRAY).append(MutableComponent.literal(cmd.getDescription()).formatted(ChatFormatting.WHITE))); if (!cmd.getAliases().isEmpty()) { - msg.append(Text.literal("\n ")).append(Text.literal("Aliases: ").formatted(Formatting.GRAY)); - msg.append(Text.literal(String.join(", ", cmd.getAliases())).formatted(Formatting.AQUA)); + msg.append(MutableComponent.literal("\n ")).append(MutableComponent.literal("Aliases: ").formatted(ChatFormatting.GRAY)); + msg.append(MutableComponent.literal(String.join(", ", cmd.getAliases())).formatted(ChatFormatting.AQUA)); } msg.append(getUsageText(cmd)); ChatUtils.sendMsg(msg); } - private MutableText getUsageText(Command cmd) { - CommandSource source = mc.getNetworkHandler().getCommandSource(); - CommandNode root = Commands.DISPATCHER.getRoot(); - CommandNode node = root.getChild(cmd.getName()); + private MutableComponent getUsageText(Command cmd) { + SharedSuggestionProvider source = mc.getNetworkHandler().getCommandSource(); + CommandNode root = Commands.DISPATCHER.getRoot(); + CommandNode node = root.getChild(cmd.getName()); - MutableText usagesText = Text.literal(""); + MutableComponent usagesText = MutableComponent.literal(""); if (node != null) { - Map, String> usages = Commands.DISPATCHER.getSmartUsage(node, source); + Map, String> usages = Commands.DISPATCHER.getSmartUsage(node, source); for (String usage : usages.values()) { - usagesText.append(Text.literal("\n " + cmd + " ").formatted(Formatting.GREEN)).append(Text.literal(usage).formatted(Formatting.GREEN)); + usagesText.append(MutableComponent.literal("\n " + cmd + " ").formatted(ChatFormatting.GREEN)).append(MutableComponent.literal(usage).formatted(ChatFormatting.GREEN)); } } if (usagesText.getString().isEmpty()) { - usagesText.append(Text.literal("\n " + cmd).formatted(Formatting.GREEN)); + usagesText.append(MutableComponent.literal("\n " + cmd).formatted(ChatFormatting.GREEN)); } - return Text.literal("\n Usage:").formatted(Formatting.GRAY).append(usagesText); + return MutableComponent.literal("\n Usage:").formatted(ChatFormatting.GRAY).append(usagesText); } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java index ae4fc9ad57..01d016c02f 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/InputCommand.java @@ -11,11 +11,11 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.events.world.TickEvent; -import meteordevelopment.meteorclient.mixin.KeyBindingAccessor; +import meteordevelopment.meteorclient.mixin.KeyMappingAccessor; import meteordevelopment.orbit.EventHandler; -import net.minecraft.client.option.KeyBinding; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.command.CommandSource; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.resources.language.I18n; +import net.minecraft.commands.SharedSuggestionProvider; import java.util.ArrayList; import java.util.List; @@ -23,7 +23,7 @@ public class InputCommand extends Command { private static final List activeHandlers = new ArrayList<>(); - private static final List> holdKeys = List.of( + private static final List> holdKeys = List.of( new Pair<>(mc.options.forwardKey, "forwards"), new Pair<>(mc.options.backKey, "backwards"), new Pair<>(mc.options.leftKey, "left"), @@ -35,7 +35,7 @@ public class InputCommand extends Command { new Pair<>(mc.options.attackKey, "attack") ); - private static final List> pressKeys = List.of( + private static final List> pressKeys = List.of( new Pair<>(mc.options.swapHandsKey, "swap"), new Pair<>(mc.options.dropKey, "drop") ); @@ -45,8 +45,8 @@ public InputCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { - for (Pair keyBinding : holdKeys) { + public void build(LiteralArgumentBuilder builder) { + for (Pair keyBinding : holdKeys) { builder.then(literal(keyBinding.getSecond()) .executes(context -> { activeHandlers.add(new KeypressHandler(keyBinding.getFirst(), 1)); @@ -61,7 +61,7 @@ public void build(LiteralArgumentBuilder builder) { ); } - for (Pair keyBinding : pressKeys) { + for (Pair keyBinding : pressKeys) { builder.then(literal(keyBinding.getSecond()) .executes(context -> { press(keyBinding.getFirst()); @@ -70,7 +70,7 @@ public void build(LiteralArgumentBuilder builder) { ); } - for (KeyBinding keyBinding : mc.options.hotbarKeys) { + for (KeyMapping keyBinding : mc.options.hotbarKeys) { builder.then(literal(keyBinding.getId().substring(4)) .executes(context -> { press(keyBinding); @@ -113,17 +113,17 @@ public void build(LiteralArgumentBuilder builder) { }))); } - private static void press(KeyBinding keyBinding) { - KeyBindingAccessor accessor = (KeyBindingAccessor) keyBinding; - accessor.meteor$setTimesPressed(accessor.meteor$getTimesPressed() + 1); + private static void press(KeyMapping keyBinding) { + KeyMappingAccessor accessor = (KeyMappingAccessor) keyBinding; + accessor.meteor$setClickCount(accessor.meteor$getClickCount() + 1); } private static class KeypressHandler { - private final KeyBinding key; + private final KeyMapping key; private final int totalTicks; private int ticks; - public KeypressHandler(KeyBinding key, int ticks) { + public KeypressHandler(KeyMapping key, int ticks) { this.key = key; this.totalTicks = ticks; this.ticks = ticks; diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/InventoryCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/InventoryCommand.java index 8ef230967c..86c6dced15 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/InventoryCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/InventoryCommand.java @@ -9,8 +9,8 @@ import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.commands.arguments.PlayerArgumentType; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.client.gui.screen.ingame.InventoryScreen; -import net.minecraft.command.CommandSource; +import net.minecraft.client.gui.screens.inventory.InventoryScreen; +import net.minecraft.commands.SharedSuggestionProvider; public class InventoryCommand extends Command { public InventoryCommand() { @@ -18,7 +18,7 @@ public InventoryCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(argument("player", PlayerArgumentType.create()).executes(context -> { Utils.screenToOpen = new InventoryScreen(PlayerArgumentType.get(context)); return SINGLE_SUCCESS; diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/LocateCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/LocateCommand.java index f3c4895d35..a8de2e9e95 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/LocateCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/LocateCommand.java @@ -16,30 +16,30 @@ import meteordevelopment.meteorclient.utils.player.ChatUtils; import meteordevelopment.meteorclient.utils.player.InvUtils; import meteordevelopment.orbit.EventHandler; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.command.CommandSource; -import net.minecraft.component.ComponentMap; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.LodestoneTrackerComponent; -import net.minecraft.component.type.MapDecorationsComponent; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.EyeOfEnderEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket; -import net.minecraft.text.MutableText; -import net.minecraft.text.Text; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.World; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.core.component.DataComponentMap; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.component.LodestoneTracker; +import net.minecraft.world.item.component.MapDecorations; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.projectile.EyeOfEnder; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.network.protocol.game.ClientboundAddEntityPacket; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.Level; import org.jetbrains.annotations.Nullable; import java.util.List; public class LocateCommand extends Command { - private Vec3d firstStart, firstEnd; - private Vec3d secondStart, secondEnd; + private Vec3 firstStart, firstEnd; + private Vec3 secondStart, secondEnd; private final List netherFortressBlocks = List.of( Blocks.NETHER_BRICKS, @@ -71,28 +71,28 @@ public LocateCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { // Overworld structures builder.then(literal("buried_treasure").executes(s -> { ItemStack stack = mc.player.getInventory().getSelectedStack(); if (stack.getItem() != Items.FILLED_MAP - || stack.get(DataComponentTypes.ITEM_NAME) == null - || !stack.get(DataComponentTypes.ITEM_NAME).getString().equals(Text.translatable("filled_map.buried_treasure").getString())) { + || stack.get(DataComponents.ITEM_NAME) == null + || !stack.get(DataComponents.ITEM_NAME).getString().equals(MutableComponent.translatable("filled_map.buried_treasure").getString())) { error("You need to hold a (highlight)buried treasure map(default)!"); return SINGLE_SUCCESS; } - MapDecorationsComponent mapDecorationsComponent = stack.get(DataComponentTypes.MAP_DECORATIONS); + MapDecorations mapDecorationsComponent = stack.get(DataComponents.MAP_DECORATIONS); if (mapDecorationsComponent == null) { error("Couldn't locate the map icons!"); return SINGLE_SUCCESS; } - for (MapDecorationsComponent.Decoration decoration : mapDecorationsComponent.decorations().values()) { + for (MapDecorations.Entry decoration : mapDecorationsComponent.decorations().values()) { if (decoration.type().value().assetId().toString().equals("minecraft:red_x")) { - Vec3d coords = new Vec3d(decoration.x(), 62, decoration.z()); - MutableText text = Text.literal("Buried Treasure located at "); + Vec3 coords = new Vec3d(decoration.x(), 62, decoration.z()); + MutableComponent text = MutableComponent.literal("Buried Treasure located at "); text.append(ChatUtils.formatCoords(coords)); text.append("."); info(text); @@ -107,22 +107,22 @@ public void build(LiteralArgumentBuilder builder) { builder.then(literal("mansion").executes(s -> { ItemStack stack = mc.player.getInventory().getSelectedStack(); if (stack.getItem() != Items.FILLED_MAP - || stack.get(DataComponentTypes.ITEM_NAME) == null - || !stack.get(DataComponentTypes.ITEM_NAME).getString().equals(Text.translatable("filled_map.mansion").getString())) { + || stack.get(DataComponents.ITEM_NAME) == null + || !stack.get(DataComponents.ITEM_NAME).getString().equals(MutableComponent.translatable("filled_map.mansion").getString())) { error("You need to hold a (highlight)woodland explorer map(default)!"); return SINGLE_SUCCESS; } - MapDecorationsComponent mapDecorationsComponent = stack.get(DataComponentTypes.MAP_DECORATIONS); + MapDecorations mapDecorationsComponent = stack.get(DataComponents.MAP_DECORATIONS); if (mapDecorationsComponent == null) { error("Couldn't locate the map icons!"); return SINGLE_SUCCESS; } - for (MapDecorationsComponent.Decoration decoration : mapDecorationsComponent.decorations().values()) { + for (MapDecorations.Entry decoration : mapDecorationsComponent.decorations().values()) { if (decoration.type().value().assetId().toString().equals("minecraft:woodland_mansion")) { - Vec3d coords = new Vec3d(decoration.x(), 62, decoration.z()); - MutableText text = Text.literal("Mansion located at "); + Vec3 coords = new Vec3d(decoration.x(), 62, decoration.z()); + MutableComponent text = MutableComponent.literal("Mansion located at "); text.append(ChatUtils.formatCoords(coords)); text.append("."); info(text); @@ -137,19 +137,19 @@ public void build(LiteralArgumentBuilder builder) { builder.then(literal("monument").executes(s -> { ItemStack stack = mc.player.getInventory().getSelectedStack(); if (stack.getItem() == Items.FILLED_MAP - && stack.get(DataComponentTypes.ITEM_NAME) != null - && stack.get(DataComponentTypes.ITEM_NAME).getString().equals(Text.translatable("filled_map.monument").getString())) { + && stack.get(DataComponents.ITEM_NAME) != null + && stack.get(DataComponents.ITEM_NAME).getString().equals(MutableComponent.translatable("filled_map.monument").getString())) { - MapDecorationsComponent mapDecorationsComponent = stack.get(DataComponentTypes.MAP_DECORATIONS); + MapDecorations mapDecorationsComponent = stack.get(DataComponents.MAP_DECORATIONS); if (mapDecorationsComponent == null) { error("Couldn't locate the map icons!"); return SINGLE_SUCCESS; } - for (MapDecorationsComponent.Decoration decoration : mapDecorationsComponent.decorations().values()) { + for (MapDecorations.Entry decoration : mapDecorationsComponent.decorations().values()) { if (decoration.type().value().assetId().toString().equals("minecraft:ocean_monument")) { - Vec3d coords = new Vec3d(decoration.x(), 62, decoration.z()); - MutableText text = Text.literal("Monument located at "); + Vec3 coords = new Vec3d(decoration.x(), 62, decoration.z()); + MutableComponent text = MutableComponent.literal("Monument located at "); text.append(ChatUtils.formatCoords(coords)); text.append("."); info(text); @@ -163,12 +163,12 @@ public void build(LiteralArgumentBuilder builder) { // If the player is not holding a valid map, try to locate the monument using Baritone if (BaritoneUtils.IS_AVAILABLE) { - Vec3d coords = findByBlockList(monumentBlocks); + Vec3 coords = findByBlockList(monumentBlocks); if (coords == null) { error("No monument found. Try using an (highlight)ocean explorer map(default) for more success."); return SINGLE_SUCCESS; } - MutableText text = Text.literal("Monument located at "); + MutableComponent text = MutableComponent.literal("Monument located at "); text.append(ChatUtils.formatCoords(coords)); text.append("."); info(text); @@ -183,7 +183,7 @@ public void build(LiteralArgumentBuilder builder) { boolean foundEye = InvUtils.testInHotbar(Items.ENDER_EYE); if (foundEye) { - if (BaritoneUtils.IS_AVAILABLE) PathManagers.get().follow(EyeOfEnderEntity.class::isInstance); + if (BaritoneUtils.IS_AVAILABLE) PathManagers.get().follow(EyeOfEnder.class::isInstance); firstStart = null; firstEnd = null; secondStart = null; @@ -191,12 +191,12 @@ public void build(LiteralArgumentBuilder builder) { MeteorClient.EVENT_BUS.subscribe(this); info("Please throw the first Eye of Ender"); } else if (BaritoneUtils.IS_AVAILABLE) { - Vec3d coords = findByBlockList(strongholdBlocks); + Vec3 coords = findByBlockList(strongholdBlocks); if (coords == null) { error("No stronghold found nearby. You can use (highlight)Ender Eyes(default) for more success."); return SINGLE_SUCCESS; } - MutableText text = Text.literal("Stronghold located at "); + MutableComponent text = MutableComponent.literal("Stronghold located at "); text.append(ChatUtils.formatCoords(coords)); text.append("."); info(text); @@ -210,7 +210,7 @@ public void build(LiteralArgumentBuilder builder) { // Nether structures builder.then(literal("nether_fortress").executes(s -> { - if (mc.world.getRegistryKey() != World.NETHER) { + if (mc.world.getRegistryKey() != Level.NETHER) { error("You need to be in the nether to locate a nether fortress."); return SINGLE_SUCCESS; } @@ -220,12 +220,12 @@ public void build(LiteralArgumentBuilder builder) { return SINGLE_SUCCESS; } - Vec3d coords = findByBlockList(netherFortressBlocks); + Vec3 coords = findByBlockList(netherFortressBlocks); if (coords == null) { error("No nether fortress found."); return SINGLE_SUCCESS; } - MutableText text = Text.literal("Fortress located at "); + MutableComponent text = MutableComponent.literal("Fortress located at "); text.append(ChatUtils.formatCoords(coords)); text.append("."); info(text); @@ -235,7 +235,7 @@ public void build(LiteralArgumentBuilder builder) { // End structures builder.then(literal("end_city").executes(s -> { - if (mc.world.getRegistryKey() != World.END) { + if (mc.world.getRegistryKey() != Level.END) { error("You need to be in the end to locate an end city."); return SINGLE_SUCCESS; } @@ -245,12 +245,12 @@ public void build(LiteralArgumentBuilder builder) { return SINGLE_SUCCESS; } - Vec3d coords = findByBlockList(endCityBlocks); + Vec3 coords = findByBlockList(endCityBlocks); if (coords == null) { error("No end city found."); return SINGLE_SUCCESS; } - MutableText text = Text.literal("End city located at "); + MutableComponent text = MutableComponent.literal("End city located at "); text.append(ChatUtils.formatCoords(coords)); text.append("."); info(text); @@ -265,12 +265,12 @@ public void build(LiteralArgumentBuilder builder) { error("You need to hold a (highlight)lodestone(default) compass!"); return SINGLE_SUCCESS; } - ComponentMap components = stack.getComponents(); + DataComponentMap components = stack.getComponents(); if (components == null) { error("Couldn't get the components data. Are you holding a (highlight)lodestone(default) compass?"); return SINGLE_SUCCESS; } - LodestoneTrackerComponent lodestoneTrackerComponent = components.get(DataComponentTypes.LODESTONE_TRACKER); + LodestoneTracker lodestoneTrackerComponent = components.get(DataComponents.LODESTONE_TRACKER); if (lodestoneTrackerComponent == null) { error("Couldn't get the components data. Are you holding a (highlight)lodestone(default) compass?"); return SINGLE_SUCCESS; @@ -281,8 +281,8 @@ public void build(LiteralArgumentBuilder builder) { return SINGLE_SUCCESS; } - Vec3d coords = Vec3d.of(lodestoneTrackerComponent.target().get().pos()); - MutableText text = Text.literal("Lodestone located at "); + Vec3 coords = Vec3.of(lodestoneTrackerComponent.target().get().pos()); + MutableComponent text = MutableComponent.literal("Lodestone located at "); text.append(ChatUtils.formatCoords(coords)); text.append("."); info(text); @@ -300,7 +300,7 @@ private void cancel() { MeteorClient.EVENT_BUS.unsubscribe(this); } - private @Nullable Vec3d findByBlockList(List blockList) { + private @Nullable Vec3 findByBlockList(List blockList) { List posList = BaritoneAPI.getProvider().getWorldScanner().scanChunkRadius(BaritoneAPI.getProvider().getPrimaryBaritone().getPlayerContext(), blockList, 64, 10, 32); if (posList.isEmpty()) { return null; @@ -313,20 +313,20 @@ private void cancel() { @EventHandler private void onReadPacket(PacketEvent.Receive event) { - if (event.packet instanceof EntitySpawnS2CPacket packet && packet.getEntityType() == EntityType.EYE_OF_ENDER) { + if (event.packet instanceof ClientboundAddEntityPacket packet && packet.getEntityType() == EntityType.EYE_OF_ENDER) { firstPosition(packet.getX(), packet.getY(), packet.getZ()); } } @EventHandler private void onRemoveEntity(EntityRemovedEvent event) { - if (event.entity instanceof EyeOfEnderEntity eye) { + if (event.entity instanceof EyeOfEnder eye) { lastPosition(eye.getX(), eye.getY(), eye.getZ()); } } private void firstPosition(double x, double y, double z) { - Vec3d pos = new Vec3d(x, y, z); + Vec3 pos = new Vec3d(x, y, z); if (this.firstStart == null) { this.firstStart = pos; } else { @@ -336,7 +336,7 @@ private void firstPosition(double x, double y, double z) { private void lastPosition(double x, double y, double z) { info("%s Eye of Ender's trajectory saved.", (this.firstEnd == null) ? "First" : "Second"); - Vec3d pos = new Vec3d(x, y, z); + Vec3 pos = new Vec3d(x, y, z); if (this.firstEnd == null) { this.firstEnd = pos; info("Please throw the second Eye Of Ender from a different location."); @@ -365,8 +365,8 @@ private void findStronghold() { } MeteorClient.EVENT_BUS.unsubscribe(this); - Vec3d coords = new Vec3d(intersection[0], 0, intersection[1]); - MutableText text = Text.literal("Stronghold roughly located at "); + Vec3 coords = new Vec3d(intersection[0], 0, intersection[1]); + MutableComponent text = MutableComponent.literal("Stronghold roughly located at "); text.append(ChatUtils.formatCoords(coords)); text.append("."); info(text); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java index 074c9eae8d..2b3a0d81eb 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/MacroCommand.java @@ -13,8 +13,8 @@ import meteordevelopment.meteorclient.events.world.TickEvent; import meteordevelopment.meteorclient.systems.macros.Macro; import meteordevelopment.orbit.EventHandler; -import net.minecraft.command.CommandSource; -import net.minecraft.command.argument.TimeArgumentType; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.commands.arguments.TimeArgument; import java.util.ArrayList; import java.util.List; @@ -30,7 +30,7 @@ public MacroCommand() { List scheduledMacros = new ArrayList<>(); @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder .then(literal("clear") .executes(context -> { @@ -66,7 +66,7 @@ public void build(LiteralArgumentBuilder builder) { return SINGLE_SUCCESS; }) - .then(argument("delay", TimeArgumentType.time()) + .then(argument("delay", TimeArgument.time()) .executes(context -> { Macro macro = MacroArgumentType.get(context); scheduleQueue.add(new ScheduledMacro(IntegerArgumentType.getInteger(context, "delay"), macro)); @@ -122,7 +122,7 @@ public ScheduledMacro(int tickDelay, Macro scheduledMacro) { } public void tick() { - delay--; + delay--; } public boolean run() { diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java index 248fea9f6a..5d4899f73a 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ModulesCommand.java @@ -10,11 +10,11 @@ import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.command.CommandSource; -import net.minecraft.text.HoverEvent; -import net.minecraft.text.MutableText; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.HoverEvent; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; public class ModulesCommand extends Command { public ModulesCommand() { @@ -22,12 +22,12 @@ public ModulesCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { ChatUtils.info("--- Modules ((highlight)%d(default)) ---", Modules.get().getCount()); Modules.loopCategories().forEach(category -> { - MutableText categoryMessage = Text.literal(""); + MutableComponent categoryMessage = MutableComponent.literal(""); Modules.get().getGroup(category).forEach(module -> categoryMessage.append(getModuleText(module))); ChatUtils.sendMsg(category.name, categoryMessage); }); @@ -36,17 +36,18 @@ public void build(LiteralArgumentBuilder builder) { }); } - private MutableText getModuleText(Module module) { + private MutableComponent getModuleText(Module module) { // Hover tooltip - MutableText tooltip = Text.literal(""); + MutableComponent tooltip = MutableComponent.literal(""); - tooltip.append(Text.literal(module.title).formatted(Formatting.BLUE, Formatting.BOLD)).append("\n"); - tooltip.append(Text.literal(module.name).formatted(Formatting.GRAY)).append("\n\n"); - tooltip.append(Text.literal(module.description).formatted(Formatting.WHITE)); + tooltip.append(MutableComponent.literal(module.title).formatted(ChatFormatting.BLUE, ChatFormatting.BOLD)).append("\n"); + tooltip.append(MutableComponent.literal(module.name).formatted(ChatFormatting.GRAY)).append("\n\n"); + tooltip.append(MutableComponent.literal(module.description).formatted(ChatFormatting.WHITE)); - MutableText finalModule = Text.literal(module.title); - if (!module.isActive()) finalModule.formatted(Formatting.GRAY); - if (!module.equals(Modules.get().getGroup(module.category).getLast())) finalModule.append(Text.literal(", ").formatted(Formatting.GRAY)); + MutableComponent finalModule = MutableComponent.literal(module.title); + if (!module.isActive()) finalModule.formatted(ChatFormatting.GRAY); + if (!module.equals(Modules.get().getGroup(module.category).getLast())) + finalModule.append(MutableComponent.literal(", ").formatted(ChatFormatting.GRAY)); finalModule.setStyle(finalModule.getStyle().withHoverEvent(new HoverEvent.ShowText(tooltip))); return finalModule; diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java index db1a317183..c6d4ddbccc 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/NameHistoryCommand.java @@ -14,10 +14,10 @@ import meteordevelopment.meteorclient.utils.player.ChatUtils; import meteordevelopment.meteorclient.utils.player.PlayerUtils; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.command.CommandSource; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.text.*; -import net.minecraft.util.Formatting; +import net.minecraft.ChatFormatting; import java.net.URI; import java.text.DateFormat; @@ -31,10 +31,10 @@ public NameHistoryCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(argument("player", PlayerListEntryArgumentType.create()).executes(context -> { MeteorExecutor.execute(() -> { - PlayerListEntry lookUpTarget = PlayerListEntryArgumentType.get(context); + PlayerInfo lookUpTarget = PlayerListEntryArgumentType.get(context); UUID uuid = lookUpTarget.getProfile().id(); NameHistory history = Http.get("https://laby.net/api/v2/user/" + uuid + "/get-profile") @@ -61,29 +61,29 @@ public void build(LiteralArgumentBuilder builder) { ) .withHoverEvent(new HoverEvent.ShowText( Text.literal("View on laby.net") - .formatted(Formatting.YELLOW) - .formatted(Formatting.ITALIC) + .formatted(ChatFormatting.YELLOW) + .formatted(ChatFormatting.ITALIC) )) ); - info(initial.append(Text.literal(" Username History:").formatted(Formatting.GRAY))); + info(initial.append(Text.literal(" Username History:").formatted(ChatFormatting.GRAY))); for (Name entry : history.username_history) { MutableText nameText = Text.literal(entry.name); - nameText.formatted(Formatting.AQUA); + nameText.formatted(ChatFormatting.AQUA); if (entry.changed_at != null && entry.changed_at.getTime() != 0) { MutableText changed = Text.literal("Changed at: "); - changed.formatted(Formatting.GRAY); + changed.formatted(ChatFormatting.GRAY); DateFormat formatter = new SimpleDateFormat("hh:mm:ss, dd/MM/yyyy"); - changed.append(Text.literal(formatter.format(entry.changed_at)).formatted(Formatting.WHITE)); + changed.append(Text.literal(formatter.format(entry.changed_at)).formatted(ChatFormatting.WHITE)); nameText.setStyle(nameText.getStyle().withHoverEvent(new HoverEvent.ShowText(changed))); } if (!entry.accurate) { - MutableText text = Text.literal("*").formatted(Formatting.WHITE); + MutableText text = Text.literal("*").formatted(ChatFormatting.WHITE); text.setStyle(text.getStyle().withHoverEvent(new HoverEvent.ShowText(Text.literal("This name history entry is not accurate according to laby.net")))); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/NbtCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/NbtCommand.java index 1eea843b3a..5d35a0c7bb 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/NbtCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/NbtCommand.java @@ -13,24 +13,24 @@ import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.commands.arguments.ComponentMapArgumentType; import meteordevelopment.meteorclient.utils.misc.text.MeteorClickEvent; -import net.minecraft.command.CommandSource; -import net.minecraft.command.DataCommandObject; -import net.minecraft.command.EntityDataObject; -import net.minecraft.command.argument.NbtPathArgumentType; -import net.minecraft.command.argument.RegistryKeyArgumentType; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.server.commands.data.DataAccessor; +import net.minecraft.server.commands.data.EntityDataAccessor; +import net.minecraft.commands.arguments.NbtPathArgument; +import net.minecraft.commands.arguments.ResourceKeyArgument; import net.minecraft.component.*; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtHelper; -import net.minecraft.network.packet.c2s.play.CreativeInventoryActionC2SPacket; -import net.minecraft.registry.Registries; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.text.HoverEvent; -import net.minecraft.text.MutableText; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; +import net.minecraft.world.item.ItemStack; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.NbtUtils; +import net.minecraft.network.protocol.game.ServerboundSetCreativeModeSlotPacket; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.HoverEvent; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; import net.minecraft.util.Unit; import java.util.List; @@ -39,15 +39,15 @@ public class NbtCommand extends Command { private static final DynamicCommandExceptionType MALFORMED_ITEM_EXCEPTION = new DynamicCommandExceptionType( - error -> Text.stringifiedTranslatable("arguments.item.malformed", error) + error -> MutableComponent.stringifiedTranslatable("arguments.item.malformed", error) ); - private final Text copyButton = Text.literal("NBT").setStyle(Style.EMPTY - .withFormatting(Formatting.UNDERLINE) + private final MutableComponent copyButton = MutableComponent.literal("NBT").setStyle(Style.EMPTY + .withFormatting(ChatFormatting.UNDERLINE) .withClickEvent(new MeteorClickEvent( this.toString("copy") )) .withHoverEvent(new HoverEvent.ShowText( - Text.literal("Copy the NBT data to your clipboard.") + MutableComponent.literal("Copy the NBT data to your clipboard.") ))); public NbtCommand() { @@ -55,7 +55,7 @@ public NbtCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(literal("add").then(argument("component", ComponentMapArgumentType.componentMap(REGISTRY_ACCESS)).executes(ctx -> { ItemStack stack = mc.player.getInventory().getSelectedStack(); @@ -107,14 +107,14 @@ public void build(LiteralArgumentBuilder builder) { return SINGLE_SUCCESS; }))); - builder.then(literal("remove").then(argument("component", RegistryKeyArgumentType.registryKey(RegistryKeys.DATA_COMPONENT_TYPE)).executes(ctx -> { + builder.then(literal("remove").then(argument("component", ResourceKeyArgument.registryKey(Registries.DATA_COMPONENT_TYPE)).executes(ctx -> { ItemStack stack = mc.player.getInventory().getSelectedStack(); if (validBasic(stack)) { @SuppressWarnings("unchecked") - RegistryKey> componentTypeKey = (RegistryKey>) ctx.getArgument("component", RegistryKey.class); + ResourceKey> componentTypeKey = (ResourceKey>) ctx.getArgument("component", ResourceKey.class); - ComponentType componentType = Registries.DATA_COMPONENT_TYPE.get(componentTypeKey); + ComponentType componentType = BuiltInRegistries.DATA_COMPONENT_TYPE.get(componentTypeKey); MergedComponentMap components = (MergedComponentMap) stack.getComponents(); components.applyChanges(ComponentChanges.builder().remove(componentType).build()); @@ -129,7 +129,7 @@ public void build(LiteralArgumentBuilder builder) { ComponentMap components = stack.getComponents(); String remaining = suggestionsBuilder.getRemaining().toLowerCase(Locale.ROOT); - CommandSource.forEachMatching(components.getTypes().stream().map(Registries.DATA_COMPONENT_TYPE::getEntry).toList(), remaining, entry -> { + SharedSuggestionProvider.forEachMatching(components.getTypes().stream().map(BuiltInRegistries.DATA_COMPONENT_TYPE::getEntry).toList(), remaining, entry -> { if (entry.getKey().isPresent()) return entry.getKey().get().getValue(); return null; }, entry -> { @@ -146,15 +146,15 @@ public void build(LiteralArgumentBuilder builder) { }))); builder.then(literal("get").executes(context -> { - DataCommandObject dataCommandObject = new EntityDataObject(mc.player); - NbtPathArgumentType.NbtPath handPath = NbtPathArgumentType.NbtPath.parse("SelectedItem"); + DataAccessor dataCommandObject = new EntityDataObject(mc.player); + NbtPathArgument.NbtPath handPath = NbtPathArgument.NbtPath.parse("SelectedItem"); - MutableText text = Text.empty().append(copyButton); + MutableComponent text = MutableComponent.empty().append(copyButton); try { - List nbtElement = handPath.get(dataCommandObject.getNbt()); + List nbtElement = handPath.get(dataCommandObject.getNbt()); if (!nbtElement.isEmpty()) { - text.append(" ").append(NbtHelper.toPrettyPrintedText(nbtElement.getFirst())); + text.append(" ").append(NbtUtils.toPrettyPrintedText(nbtElement.getFirst())); } } catch (CommandSyntaxException e) { text.append("{}"); @@ -166,16 +166,16 @@ public void build(LiteralArgumentBuilder builder) { })); builder.then(literal("copy").executes(context -> { - DataCommandObject dataCommandObject = new EntityDataObject(mc.player); - NbtPathArgumentType.NbtPath handPath = NbtPathArgumentType.NbtPath.parse("SelectedItem"); + DataAccessor dataCommandObject = new EntityDataObject(mc.player); + NbtPathArgument.NbtPath handPath = NbtPathArgument.NbtPath.parse("SelectedItem"); - MutableText text = Text.empty().append(copyButton); + MutableComponent text = MutableComponent.empty().append(copyButton); String nbt = "{}"; try { - List nbtElement = handPath.get(dataCommandObject.getNbt()); + List nbtElement = handPath.get(dataCommandObject.getNbt()); if (!nbtElement.isEmpty()) { - text.append(" ").append(NbtHelper.toPrettyPrintedText(nbtElement.getFirst())); + text.append(" ").append(NbtUtils.toPrettyPrintedText(nbtElement.getFirst())); nbt = nbtElement.getFirst().toString(); } } catch (CommandSyntaxException e) { diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/NotebotCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/NotebotCommand.java index ee791ce2fc..01c11e6e16 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/NotebotCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/NotebotCommand.java @@ -18,11 +18,11 @@ import meteordevelopment.meteorclient.systems.modules.misc.Notebot; import meteordevelopment.meteorclient.utils.notebot.song.Note; import meteordevelopment.orbit.EventHandler; -import net.minecraft.block.enums.NoteBlockInstrument; -import net.minecraft.command.CommandSource; -import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; -import net.minecraft.sound.SoundEvent; -import net.minecraft.text.Text; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.protocol.game.ClientboundSoundPacket; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.network.chat.Component; import net.minecraft.util.Util; import java.io.FileWriter; @@ -34,8 +34,8 @@ import java.util.Map; public class NotebotCommand extends Command { - private static final SimpleCommandExceptionType INVALID_SONG = new SimpleCommandExceptionType(Text.literal("Invalid song.")); - private static final DynamicCommandExceptionType INVALID_PATH = new DynamicCommandExceptionType(object -> Text.literal("'%s' is not a valid path.".formatted(object))); + private static final SimpleCommandExceptionType INVALID_SONG = new SimpleCommandExceptionType(Component.literal("Invalid song.")); + private static final DynamicCommandExceptionType INVALID_PATH = new DynamicCommandExceptionType(object -> Component.literal("'%s' is not a valid path.".formatted(object))); int ticks = -1; private final Map> song = new HashMap<>(); // tick -> notes @@ -45,7 +45,7 @@ public NotebotCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(literal("help").executes(ctx -> { Util.getOperatingSystem().open("https://github.com/MeteorDevelopment/meteor-client/wiki/Notebot-Guide"); return SINGLE_SUCCESS; @@ -105,7 +105,7 @@ public void build(LiteralArgumentBuilder builder) { } notebot.previewSong(songPath.toFile()); return SINGLE_SUCCESS; - }))); + }))); builder.then(literal("record").then(literal("start").executes(ctx -> { ticks = -1; @@ -144,7 +144,7 @@ private void onTick(TickEvent.Post event) { @EventHandler private void onReadPacket(PacketEvent.Receive event) { - if (event.packet instanceof PlaySoundS2CPacket sound && sound.getSound().value().id().getPath().contains("note_block")) { + if (event.packet instanceof ClientboundSoundPacket sound && sound.getSound().value().id().getPath().contains("note_block")) { if (ticks == -1) ticks = 0; List notes = song.computeIfAbsent(ticks, tick -> new ArrayList<>()); var note = getNote(sound); @@ -184,7 +184,7 @@ private void saveRecording(Path path) { } - private Note getNote(PlaySoundS2CPacket soundPacket) { + private Note getNote(ClientboundSoundPacket soundPacket) { float pitch = soundPacket.getPitch(); // Bruteforce note level diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/PeekCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/PeekCommand.java index 52e9761622..1d25b00d5d 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/PeekCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/PeekCommand.java @@ -9,26 +9,26 @@ import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.command.CommandSource; -import net.minecraft.entity.decoration.ItemFrameEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.text.Text; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.world.entity.decoration.ItemFrame; +import net.minecraft.world.item.ItemStack; +import net.minecraft.network.chat.Component; public class PeekCommand extends Command { private static final ItemStack[] ITEMS = new ItemStack[27]; - private static final SimpleCommandExceptionType CANT_PEEK = new SimpleCommandExceptionType(Text.literal("You must be holding a storage block or looking at an item frame.")); + private static final SimpleCommandExceptionType CANT_PEEK = new SimpleCommandExceptionType(Component.literal("You must be holding a storage block or looking at an item frame.")); public PeekCommand() { super("peek", "Lets you see what's inside storage block items."); } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { if (Utils.openContainer(mc.player.getMainHandStack(), ITEMS, true)) return SINGLE_SUCCESS; else if (Utils.openContainer(mc.player.getOffHandStack(), ITEMS, true)) return SINGLE_SUCCESS; - else if (mc.targetedEntity instanceof ItemFrameEntity && - Utils.openContainer(((ItemFrameEntity) mc.targetedEntity).getHeldItemStack(), ITEMS, true) + else if (mc.targetedEntity instanceof ItemFrame && + Utils.openContainer(((ItemFrame) mc.targetedEntity).getHeldItemStack(), ITEMS, true) ) return SINGLE_SUCCESS; else throw CANT_PEEK.create(); }); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java index 43c816f1c1..edf3e4eb66 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ProfilesCommand.java @@ -10,7 +10,7 @@ import meteordevelopment.meteorclient.commands.arguments.ProfileArgumentType; import meteordevelopment.meteorclient.systems.profiles.Profile; import meteordevelopment.meteorclient.systems.profiles.Profiles; -import net.minecraft.command.CommandSource; +import net.minecraft.commands.SharedSuggestionProvider; public class ProfilesCommand extends Command { @@ -19,7 +19,7 @@ public ProfilesCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(literal("load").then(argument("profile", ProfileArgumentType.create()).executes(context -> { Profile profile = ProfileArgumentType.get(context); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java index f299819854..719c90b1d7 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ReloadCommand.java @@ -13,7 +13,7 @@ import meteordevelopment.meteorclient.systems.friends.Friends; import meteordevelopment.meteorclient.utils.network.Capes; import meteordevelopment.meteorclient.utils.network.MeteorExecutor; -import net.minecraft.command.CommandSource; +import net.minecraft.commands.SharedSuggestionProvider; public class ReloadCommand extends Command { public ReloadCommand() { @@ -21,7 +21,7 @@ public ReloadCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { warning("Reloading systems, this may take a while."); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ResetCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ResetCommand.java index 3377b7d7e1..2b2e946c81 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ResetCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ResetCommand.java @@ -14,7 +14,7 @@ import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.command.CommandSource; +import net.minecraft.commands.SharedSuggestionProvider; public class ResetCommand extends Command { @@ -23,7 +23,7 @@ public ResetCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(literal("settings") .then(argument("module", ModuleArgumentType.create()).executes(context -> { Module module = context.getArgument("module", Module.class); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java index d9b3be2622..0d63f705d5 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/RotationCommand.java @@ -9,9 +9,9 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.commands.arguments.DirectionArgumentType; -import net.minecraft.command.CommandSource; -import net.minecraft.util.math.Direction; -import net.minecraft.util.math.MathHelper; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; public class RotationCommand extends Command { public RotationCommand() { @@ -19,7 +19,7 @@ public RotationCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder .then(literal("set") .then(argument("direction", DirectionArgumentType.create()) @@ -59,7 +59,7 @@ public void build(LiteralArgumentBuilder builder) { mc.player.setPitch(pitch >= 0 ? Math.min(pitch, 90) : Math.max(pitch, -90)); float yaw = mc.player.getYaw() + context.getArgument("yaw", Float.class); - mc.player.setYaw(MathHelper.wrapDegrees(yaw)); + mc.player.setYaw(Mth.wrapDegrees(yaw)); return SINGLE_SUCCESS; }) diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java index e29c4f2f48..0247a42ea3 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SaveMapCommand.java @@ -1,3 +1,4 @@ +// TODO(Ravel): Failed to fully resolve file: null cannot be cast to non-null type com.intellij.psi.PsiClass /* * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). * Copyright (c) Meteor Development. @@ -12,14 +13,14 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.mixin.MapTextureManagerAccessor; -import net.minecraft.client.texture.MapTextureManager; -import net.minecraft.command.CommandSource; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.item.FilledMapItem; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.map.MapState; -import net.minecraft.text.Text; +import net.minecraft.client.resources.MapTextureManager; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.MapItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.saveddata.maps.MapItemSavedData; +import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; import org.lwjgl.BufferUtils; import org.lwjgl.PointerBuffer; @@ -33,8 +34,8 @@ import java.nio.ByteBuffer; public class SaveMapCommand extends Command { - private static final SimpleCommandExceptionType MAP_NOT_FOUND = new SimpleCommandExceptionType(Text.literal("You must be holding a filled map.")); - private static final SimpleCommandExceptionType OOPS = new SimpleCommandExceptionType(Text.literal("Something went wrong.")); + private static final SimpleCommandExceptionType MAP_NOT_FOUND = new SimpleCommandExceptionType(Component.literal("You must be holding a filled map.")); + private static final SimpleCommandExceptionType OOPS = new SimpleCommandExceptionType(Component.literal("Something went wrong.")); private final PointerBuffer filters; @@ -50,7 +51,7 @@ public SaveMapCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { saveMap(128); @@ -65,14 +66,14 @@ public void build(LiteralArgumentBuilder builder) { @SuppressWarnings("deprecation") // Use of NativeImage#makePixelArray private void saveMap(int scale) throws CommandSyntaxException { ItemStack map = getMap(); - MapState state = getMapState(); + MapItemSavedData state = getMapState(); if (map == null || state == null) throw MAP_NOT_FOUND.create(); File path = getPath(); if (path == null) throw OOPS.create(); MapTextureManagerAccessor textureManager = (MapTextureManagerAccessor) mc.gameRenderer.getClient().getMapTextureManager(); - MapTextureManager.MapTexture texture = textureManager.meteor$invokeGetMapTexture(map.get(DataComponentTypes.MAP_ID), state); + MapTextureManager.MapInstance texture = textureManager.meteor$invokeGetMapTexture(map.get(DataComponents.MAP_ID), state); if (texture.texture.getImage() == null) throw OOPS.create(); try { @@ -93,11 +94,11 @@ private void saveMap(int scale) throws CommandSyntaxException { } } - private @Nullable MapState getMapState() { + private @Nullable MapItemSavedData getMapState() { ItemStack map = getMap(); if (map == null) return null; - return FilledMapItem.getMapState(map.get(DataComponentTypes.MAP_ID), mc.world); + return MapItem.getMapState(map.get(DataComponents.MAP_ID), mc.world); } private @Nullable File getPath() { diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SayCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SayCommand.java index 102bc003fe..7a638cd542 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SayCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SayCommand.java @@ -1,3 +1,4 @@ +// TODO(Ravel): Failed to fully resolve file: null cannot be cast to non-null type com.intellij.psi.PsiClass /* * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). * Copyright (c) Meteor Development. @@ -8,15 +9,15 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import meteordevelopment.meteorclient.commands.Command; -import meteordevelopment.meteorclient.mixin.ClientPlayNetworkHandlerAccessor; +import meteordevelopment.meteorclient.mixin.ClientPacketListenerAccessor; import meteordevelopment.meteorclient.utils.misc.MeteorStarscript; -import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.command.CommandSource; -import net.minecraft.network.encryption.NetworkEncryptionUtils; -import net.minecraft.network.message.LastSeenMessagesCollector; -import net.minecraft.network.message.MessageBody; -import net.minecraft.network.message.MessageSignatureData; -import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.util.Crypt; +import net.minecraft.network.chat.LastSeenMessagesTracker; +import net.minecraft.network.chat.SignedMessageBody; +import net.minecraft.network.chat.MessageSignature; +import net.minecraft.network.protocol.game.ServerboundChatPacket; import org.meteordev.starscript.Script; import java.time.Instant; @@ -27,7 +28,7 @@ public SayCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(argument("message", StringArgumentType.greedyString()).executes(context -> { String msg = context.getArgument("message", String.class); Script script = MeteorStarscript.compile(msg); @@ -37,10 +38,10 @@ public void build(LiteralArgumentBuilder builder) { if (message != null) { Instant instant = Instant.now(); - long l = NetworkEncryptionUtils.SecureRandomUtil.nextLong(); - ClientPlayNetworkHandler handler = mc.getNetworkHandler(); - LastSeenMessagesCollector.LastSeenMessages lastSeenMessages = ((ClientPlayNetworkHandlerAccessor) handler).meteor$getLastSeenMessagesCollector().collect(); - MessageSignatureData messageSignatureData = ((ClientPlayNetworkHandlerAccessor) handler).meteor$getMessagePacker().pack(new MessageBody(message, instant, l, lastSeenMessages.lastSeen())); + long l = Crypt.SaltSupplier.nextLong(); + ClientPacketListener handler = mc.getNetworkHandler(); + LastSeenMessagesTracker.Update lastSeenMessages = ((ClientPacketListenerAccessor) handler).meteor$getLastSeenMessages().collect(); + MessageSignature messageSignatureData = ((ClientPlayNetworkHandlerAccessor) handler).meteor$getMessagePacker().pack(new MessageBody(message, instant, l, lastSeenMessages.lastSeen())); handler.sendPacket(new ChatMessageC2SPacket(message, instant, l, messageSignatureData, lastSeenMessages.update())); } } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ServerCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ServerCommand.java index 3267e448ea..6b6837a153 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ServerCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ServerCommand.java @@ -1,3 +1,4 @@ +// TODO(Ravel): Failed to fully resolve file: null cannot be cast to non-null type com.intellij.psi.PsiClass /* * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). * Copyright (c) Meteor Development. @@ -12,27 +13,27 @@ import meteordevelopment.meteorclient.commands.Command; import meteordevelopment.meteorclient.events.packets.PacketEvent; import meteordevelopment.meteorclient.events.world.TickEvent; -import meteordevelopment.meteorclient.mixin.ClientPlayNetworkHandlerAccessor; +import meteordevelopment.meteorclient.mixin.ClientPacketListenerAccessor; import meteordevelopment.meteorclient.utils.world.TickRate; import meteordevelopment.orbit.EventHandler; -import net.minecraft.client.network.ServerAddress; -import net.minecraft.client.network.ServerInfo; -import net.minecraft.command.CommandRegistryAccess; -import net.minecraft.command.CommandSource; -import net.minecraft.command.DefaultPermissions; -import net.minecraft.command.permission.PermissionPredicate; -import net.minecraft.network.packet.c2s.play.RequestCommandCompletionsC2SPacket; -import net.minecraft.network.packet.s2c.play.CommandSuggestionsS2CPacket; -import net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket; -import net.minecraft.server.integrated.IntegratedServer; -import net.minecraft.text.ClickEvent; -import net.minecraft.text.HoverEvent; -import net.minecraft.text.MutableText; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; -import net.minecraft.world.LocalDifficulty; +import net.minecraft.client.multiplayer.resolver.ServerAddress; +import net.minecraft.client.multiplayer.ServerData; +import net.minecraft.commands.CommandBuildContext; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.server.permissions.Permissions; +import net.minecraft.server.permissions.PermissionSet; +import net.minecraft.network.protocol.game.ServerboundCommandSuggestionPacket; +import net.minecraft.network.protocol.game.ClientboundCommandSuggestionsPacket; +import net.minecraft.network.protocol.game.ClientboundCommandsPacket; +import net.minecraft.client.server.IntegratedServer; +import net.minecraft.network.chat.ClickEvent; +import net.minecraft.network.chat.HoverEvent; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; +import net.minecraft.world.DifficultyInstance; import net.minecraft.world.attribute.EnvironmentAttributes; -import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.level.dimension.DimensionType; import org.apache.commons.lang3.Strings; import java.net.InetAddress; @@ -60,7 +61,7 @@ public ServerCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.executes(context -> { basicInfo(); return SINGLE_SUCCESS; @@ -84,10 +85,10 @@ public void build(LiteralArgumentBuilder builder) { builder.then(literal("tps").executes(ctx -> { float tps = TickRate.INSTANCE.getTickRate(); - Formatting color; - if (tps > 17.0f) color = Formatting.GREEN; - else if (tps > 12.0f) color = Formatting.YELLOW; - else color = Formatting.RED; + ChatFormatting color; + if (tps > 17.0f) color = ChatFormatting.GREEN; + else if (tps > 12.0f) color = ChatFormatting.YELLOW; + else color = ChatFormatting.RED; info("Current TPS: %s%.2f(default).", color, tps); return SINGLE_SUCCESS; })); @@ -103,7 +104,7 @@ private void basicInfo() { return; } - ServerInfo server = mc.getCurrentServerEntry(); + ServerData server = mc.getCurrentServerEntry(); if (server == null) { info("Couldn't obtain any server information."); @@ -113,33 +114,33 @@ private void basicInfo() { String ipv4 = ""; try { ipv4 = InetAddress.getByName(server.address).getHostAddress(); - } catch (UnknownHostException ignored) {} + } catch (UnknownHostException ignored) { + } - MutableText ipText; + MutableComponent ipText; if (ipv4.isEmpty()) { - ipText = Text.literal(Formatting.GRAY + server.address); + ipText = MutableComponent.literal(ChatFormatting.GRAY + server.address); ipText.setStyle(ipText.getStyle() .withClickEvent(new ClickEvent.CopyToClipboard(server.address)) - .withHoverEvent(new HoverEvent.ShowText(Text.literal("Copy to clipboard"))) + .withHoverEvent(new HoverEvent.ShowText(MutableComponent.literal("Copy to clipboard"))) ); - } - else { - ipText = Text.literal(Formatting.GRAY + server.address); + } else { + ipText = MutableComponent.literal(ChatFormatting.GRAY + server.address); ipText.setStyle(ipText.getStyle() .withClickEvent(new ClickEvent.CopyToClipboard(server.address)) - .withHoverEvent(new HoverEvent.ShowText(Text.literal("Copy to clipboard"))) + .withHoverEvent(new HoverEvent.ShowText(MutableComponent.literal("Copy to clipboard"))) ); - MutableText ipv4Text = Text.literal(String.format("%s (%s)", Formatting.GRAY, ipv4)); + MutableComponent ipv4Text = MutableComponent.literal(String.format("%s (%s)", ChatFormatting.GRAY, ipv4)); ipv4Text.setStyle(ipText.getStyle() .withClickEvent(new ClickEvent.CopyToClipboard(ipv4)) - .withHoverEvent(new HoverEvent.ShowText(Text.literal("Copy to clipboard"))) + .withHoverEvent(new HoverEvent.ShowText(MutableComponent.literal("Copy to clipboard"))) ); ipText.append(ipv4Text); } info( - Text.literal(String.format("%sIP: ", Formatting.GRAY)) - .append(ipText) + MutableComponent.literal(String.format("%sIP: ", ChatFormatting.GRAY)) + .append(ipText) ); info("Port: %d", ServerAddress.parse(server.address).getPort()); @@ -161,12 +162,12 @@ private void basicInfo() { } public String formatPerms() { - PermissionPredicate permissions = mc.player.getPermissions(); + PermissionSet permissions = mc.player.getPermissions(); - if (permissions.hasPermission(DefaultPermissions.OWNERS)) return "4 (Owner)"; - else if (permissions.hasPermission(DefaultPermissions.ADMINS)) return "3 (Admin)"; - else if (permissions.hasPermission(DefaultPermissions.GAMEMASTERS)) return "2 (Gamemaster)"; - else if (permissions.hasPermission(DefaultPermissions.MODERATORS)) return "1 (Moderator)"; + if (permissions.hasPermission(Permissions.OWNERS)) return "4 (Owner)"; + else if (permissions.hasPermission(Permissions.ADMINS)) return "3 (Admin)"; + else if (permissions.hasPermission(Permissions.GAMEMASTERS)) return "2 (Gamemaster)"; + else if (permissions.hasPermission(Permissions.MODERATORS)) return "1 (Moderator)"; else return "0 (No Perms)"; } @@ -198,7 +199,7 @@ private void onTick(TickEvent.Post event) { @EventHandler private void onSendPacket(PacketEvent.Send event) { - if (tick && event.packet instanceof RequestCommandCompletionsC2SPacket) event.cancel(); + if (tick && event.packet instanceof ServerboundCommandSuggestionPacket) event.cancel(); } @EventHandler @@ -206,15 +207,15 @@ private void onReadPacket(PacketEvent.Receive event) { // should return the same set of plugins that command completing '/' would // the rationale is that since we should get this packet whenever we log into the server, we can capture it // straight away and not need to send a command completion packet for essentially the same results - if (event.packet instanceof CommandTreeS2CPacket packet) { - ClientPlayNetworkHandlerAccessor handler = (ClientPlayNetworkHandlerAccessor) event.connection.getPacketListener(); + if (event.packet instanceof ClientboundCommandsPacket packet) { + ClientPacketListenerAccessor handler = (ClientPacketListenerAccessor) event.connection.getPacketListener(); commandTreePlugins.clear(); alias = null; // This gets the root node of the command tree. From there, all of its children have to be of type // LiteralCommandNode, so we don't need to worry about checking or casting and can just grab the name packet.getCommandTree( - CommandRegistryAccess.of(handler.meteor$getCombinedDynamicRegistries(), handler.meteor$getEnabledFeatures()), + CommandBuildContext.of(handler.meteor$getCombinedDynamicRegistries(), handler.meteor$getEnabledFeatures()), ClientPlayNetworkHandlerAccessor.meteor$getCommandNodeFactory() ).getChildren().forEach(node -> { String[] split = node.getName().split(":"); @@ -233,7 +234,7 @@ private void onReadPacket(PacketEvent.Receive event) { if (!tick) return; try { - if (event.packet instanceof CommandSuggestionsS2CPacket packet) { + if (event.packet instanceof ClientboundCommandSuggestionsPacket packet) { Suggestions matches = packet.getSuggestions(); if (matches.isEmpty()) { @@ -255,10 +256,9 @@ private void onReadPacket(PacketEvent.Receive event) { private String formatName(String name) { if (ANTICHEAT_LIST.contains(name.toLowerCase())) { - return String.format("%s%s(default)", Formatting.RED, name); - } - else if (Strings.CI.contains(name, "exploit") || Strings.CI.contains(name, "cheat") || Strings.CI.contains(name, "illegal")) { - return String.format("%s%s(default)", Formatting.RED, name); + return String.format("%s%s(default)", ChatFormatting.RED, name); + } else if (Strings.CI.contains(name, "exploit") || Strings.CI.contains(name, "cheat") || Strings.CI.contains(name, "illegal")) { + return String.format("%s%s(default)", ChatFormatting.RED, name); } return String.format("(highlight)%s(default)", name); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SettingCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SettingCommand.java index 1b20b66a55..bad82f72b9 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SettingCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SettingCommand.java @@ -21,7 +21,7 @@ import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.command.CommandSource; +import net.minecraft.commands.SharedSuggestionProvider; public class SettingCommand extends Command { public SettingCommand() { @@ -29,7 +29,7 @@ public SettingCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { // Open hud screen builder.then( literal("hud") @@ -106,28 +106,28 @@ public void build(LiteralArgumentBuilder builder) { argument("module", ModuleArgumentType.create()) .then( argument("setting", SettingArgumentType.create()) - .executes(context -> { - // Get setting value - Setting setting = SettingArgumentType.get(context); - - ModuleArgumentType.get(context).info("Setting (highlight)%s(default) is (highlight)%s(default).", setting.title, setting.get()); - - return SINGLE_SUCCESS; - }) - .then( - argument("value", SettingValueArgumentType.create()) - .executes(context -> { - // Set setting value - Setting setting = SettingArgumentType.get(context); - String value = SettingValueArgumentType.get(context); - - if (setting.parse(value)) { - ModuleArgumentType.get(context).info("Setting (highlight)%s(default) changed to (highlight)%s(default).", setting.title, value); - } - - return SINGLE_SUCCESS; - }) - ) + .executes(context -> { + // Get setting value + Setting setting = SettingArgumentType.get(context); + + ModuleArgumentType.get(context).info("Setting (highlight)%s(default) is (highlight)%s(default).", setting.title, setting.get()); + + return SINGLE_SUCCESS; + }) + .then( + argument("value", SettingValueArgumentType.create()) + .executes(context -> { + // Set setting value + Setting setting = SettingArgumentType.get(context); + String value = SettingValueArgumentType.get(context); + + if (setting.parse(value)) { + ModuleArgumentType.get(context).info("Setting (highlight)%s(default) changed to (highlight)%s(default).", setting.title, value); + } + + return SINGLE_SUCCESS; + }) + ) ) ); } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SpectateCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SpectateCommand.java index d54ed7cce9..058f809d90 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SpectateCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SpectateCommand.java @@ -13,8 +13,8 @@ import meteordevelopment.meteorclient.events.meteor.MouseClickEvent; import meteordevelopment.meteorclient.utils.misc.input.Input; import meteordevelopment.orbit.EventHandler; -import net.minecraft.command.CommandSource; -import net.minecraft.text.Text; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; public class SpectateCommand extends Command { @@ -25,7 +25,7 @@ public SpectateCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(literal("reset").executes(context -> { mc.setCameraEntity(mc.player); return SINGLE_SUCCESS; @@ -33,7 +33,7 @@ public void build(LiteralArgumentBuilder builder) { builder.then(argument("player", PlayerArgumentType.create()).executes(context -> { mc.setCameraEntity(PlayerArgumentType.get(context)); - mc.player.sendMessage(Text.literal("Sneak to un-spectate."), true); + mc.player.sendMessage(Component.literal("Sneak to un-spectate."), true); MeteorClient.EVENT_BUS.subscribe(shiftListener); return SINGLE_SUCCESS; })); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/SwarmCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/SwarmCommand.java index 1397af8f4a..d475a88295 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/SwarmCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/SwarmCommand.java @@ -24,14 +24,14 @@ import meteordevelopment.meteorclient.systems.modules.world.InfinityMiner; import meteordevelopment.meteorclient.utils.misc.text.MeteorClickEvent; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.command.CommandSource; -import net.minecraft.command.argument.BlockStateArgument; -import net.minecraft.command.argument.BlockStateArgumentType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.text.Style; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; -import net.minecraft.util.math.BlockPos; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.commands.arguments.blocks.BlockInput; +import net.minecraft.commands.arguments.blocks.BlockStateArgument; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -39,7 +39,7 @@ public class SwarmCommand extends Command { - private final static SimpleCommandExceptionType SWARM_NOT_ACTIVE = new SimpleCommandExceptionType(Text.literal("The swarm module must be active to use this command.")); + private final static SimpleCommandExceptionType SWARM_NOT_ACTIVE = new SimpleCommandExceptionType(Component.literal("The swarm module must be active to use this command.")); private @Nullable ObjectIntPair pendingConnection; public SwarmCommand() { @@ -47,13 +47,12 @@ public SwarmCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(literal("disconnect").executes(context -> { Swarm swarm = Modules.get().get(Swarm.class); if (swarm.isActive()) { swarm.close(); - } - else { + } else { throw SWARM_NOT_ACTIVE.create(); } @@ -61,49 +60,49 @@ public void build(LiteralArgumentBuilder builder) { })); builder.then(literal("join") - .then(argument("ip", StringArgumentType.string()) - .then(argument("port", IntegerArgumentType.integer(0, 65535)) - .executes(context -> { - String ip = StringArgumentType.getString(context, "ip"); - int port = IntegerArgumentType.getInteger(context, "port"); - - pendingConnection = new ObjectIntImmutablePair<>(ip, port); - - info("Are you sure you want to connect to '%s:%s'?", ip, port); - info(Text.literal("Click here to confirm").setStyle(Style.EMPTY - .withFormatting(Formatting.UNDERLINE, Formatting.GREEN) - .withClickEvent(new MeteorClickEvent(".swarm join confirm")) - )); - - return SINGLE_SUCCESS; - }) - ) - ) - .then(literal("confirm").executes(ctx -> { - if (pendingConnection == null) { - error("No pending swarm connections."); + .then(argument("ip", StringArgumentType.string()) + .then(argument("port", IntegerArgumentType.integer(0, 65535)) + .executes(context -> { + String ip = StringArgumentType.getString(context, "ip"); + int port = IntegerArgumentType.getInteger(context, "port"); + + pendingConnection = new ObjectIntImmutablePair<>(ip, port); + + info("Are you sure you want to connect to '%s:%s'?", ip, port); + info(Component.literal("Click here to confirm").setStyle(Style.EMPTY + .withFormatting(ChatFormatting.UNDERLINE, ChatFormatting.GREEN) + .withClickEvent(new MeteorClickEvent(".swarm join confirm")) + )); + return SINGLE_SUCCESS; - } + }) + ) + ) + .then(literal("confirm").executes(ctx -> { + if (pendingConnection == null) { + error("No pending swarm connections."); + return SINGLE_SUCCESS; + } - Swarm swarm = Modules.get().get(Swarm.class); - swarm.enable(); + Swarm swarm = Modules.get().get(Swarm.class); + swarm.enable(); - swarm.close(); - swarm.mode.set(Swarm.Mode.Worker); - swarm.worker = new SwarmWorker(pendingConnection.left(), pendingConnection.rightInt()); + swarm.close(); + swarm.mode.set(Swarm.Mode.Worker); + swarm.worker = new SwarmWorker(pendingConnection.left(), pendingConnection.rightInt()); - pendingConnection = null; + pendingConnection = null; - try { - info("Connected to (highlight)%s.", swarm.worker.getConnection()); - } catch (NullPointerException e) { - error("Error connecting to swarm host."); - swarm.close(); - swarm.toggle(); - } + try { + info("Connected to (highlight)%s.", swarm.worker.getConnection()); + } catch (NullPointerException e) { + error("Error connecting to swarm host."); + swarm.close(); + swarm.toggle(); + } - return SINGLE_SUCCESS; - })) + return SINGLE_SUCCESS; + })) ); builder.then(literal("connections").executes(context -> { @@ -115,18 +114,16 @@ public void build(LiteralArgumentBuilder builder) { for (int i = 0; i < swarm.host.getConnections().length; i++) { SwarmConnection connection = swarm.host.getConnections()[i]; - if (connection != null) ChatUtils.info("(highlight)Worker %s(default): %s.", i, connection.getConnection()); + if (connection != null) + ChatUtils.info("(highlight)Worker %s(default): %s.", i, connection.getConnection()); } - } - else { + } else { warning("No active connections"); } - } - else if (swarm.isWorker()) { + } else if (swarm.isWorker()) { info("Connected to (highlight)%s", swarm.worker.getConnection()); } - } - else { + } else { throw SWARM_NOT_ACTIVE.create(); } @@ -134,201 +131,187 @@ else if (swarm.isWorker()) { })); builder.then(literal("follow").executes(context -> { - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput() + " " + mc.player.getName().getString()); - } - else if (swarm.isWorker()) { - error("The follow host command must be used by the host."); + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput() + " " + mc.player.getName().getString()); + } else if (swarm.isWorker()) { + error("The follow host command must be used by the host."); + } + } else { + throw SWARM_NOT_ACTIVE.create(); } - } - else { - throw SWARM_NOT_ACTIVE.create(); - } - return SINGLE_SUCCESS; - }).then(argument("player", PlayerArgumentType.create()).executes(context -> { - PlayerEntity playerEntity = PlayerArgumentType.get(context); + return SINGLE_SUCCESS; + }).then(argument("player", PlayerArgumentType.create()).executes(context -> { + Player playerEntity = PlayerArgumentType.get(context); - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput()); - } - else if (swarm.isWorker() && playerEntity != null) { - PathManagers.get().follow(entity -> entity.getName().getString().equalsIgnoreCase(playerEntity.getName().getString())); + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput()); + } else if (swarm.isWorker() && playerEntity != null) { + PathManagers.get().follow(entity -> entity.getName().getString().equalsIgnoreCase(playerEntity.getName().getString())); + } + } else { + throw SWARM_NOT_ACTIVE.create(); } - } - else { - throw SWARM_NOT_ACTIVE.create(); - } - return SINGLE_SUCCESS; - })) + return SINGLE_SUCCESS; + })) ); builder.then(literal("goto") - .then(argument("x", IntegerArgumentType.integer()) - .then(argument("z", IntegerArgumentType.integer()).executes(context -> { - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput()); - } - else if (swarm.isWorker()) { - int x = IntegerArgumentType.getInteger(context, "x"); - int z = IntegerArgumentType.getInteger(context, "z"); - - PathManagers.get().moveTo(new BlockPos(x, 0, z), true); - } - } - else { - throw SWARM_NOT_ACTIVE.create(); - } - return SINGLE_SUCCESS; - })) - ) + .then(argument("x", IntegerArgumentType.integer()) + .then(argument("z", IntegerArgumentType.integer()).executes(context -> { + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput()); + } else if (swarm.isWorker()) { + int x = IntegerArgumentType.getInteger(context, "x"); + int z = IntegerArgumentType.getInteger(context, "z"); + + PathManagers.get().moveTo(new BlockPos(x, 0, z), true); + } + } else { + throw SWARM_NOT_ACTIVE.create(); + } + return SINGLE_SUCCESS; + })) + ) ); builder.then(literal("infinity-miner").executes(context -> { - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput()); - } - else if (swarm.isWorker()) { - runInfinityMiner(); - } - } - else { - throw SWARM_NOT_ACTIVE.create(); - } - return SINGLE_SUCCESS; - }) - .then(argument("target", BlockStateArgumentType.blockState(REGISTRY_ACCESS)).executes(context -> { - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput()); - } - else if (swarm.isWorker()) { - Modules.get().get(InfinityMiner.class).targetBlocks.set(List.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock())); - runInfinityMiner(); - } - } - else { - throw SWARM_NOT_ACTIVE.create(); - } - return SINGLE_SUCCESS; - }) - .then(argument("repair", BlockStateArgumentType.blockState(REGISTRY_ACCESS)).executes(context -> { - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput()); - } - else if (swarm.isWorker()) { - Modules.get().get(InfinityMiner.class).targetBlocks.set(List.of(context.getArgument("target", BlockStateArgument.class).getBlockState().getBlock())); - Modules.get().get(InfinityMiner.class).repairBlocks.set(List.of(context.getArgument("repair", BlockStateArgument.class).getBlockState().getBlock())); - runInfinityMiner(); - } - } - else { - throw SWARM_NOT_ACTIVE.create(); - } - return SINGLE_SUCCESS; - }))) - .then(literal("logout").then(argument("logout", BoolArgumentType.bool()).executes(context -> { - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput()); + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput()); + } else if (swarm.isWorker()) { + runInfinityMiner(); + } + } else { + throw SWARM_NOT_ACTIVE.create(); } - else if (swarm.isWorker()) { - Modules.get().get(InfinityMiner.class).logOut.set(BoolArgumentType.getBool(context, "logout")); + return SINGLE_SUCCESS; + }) + .then(argument("target", BlockStateArgument.blockState(REGISTRY_ACCESS)).executes(context -> { + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput()); + } else if (swarm.isWorker()) { + Modules.get().get(InfinityMiner.class).targetBlocks.set(List.of(context.getArgument("target", BlockInput.class).getBlockState().getBlock())); + runInfinityMiner(); + } + } else { + throw SWARM_NOT_ACTIVE.create(); + } + return SINGLE_SUCCESS; + }) + .then(argument("repair", BlockStateArgument.blockState(REGISTRY_ACCESS)).executes(context -> { + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput()); + } else if (swarm.isWorker()) { + Modules.get().get(InfinityMiner.class).targetBlocks.set(List.of(context.getArgument("target", BlockInput.class).getBlockState().getBlock())); + Modules.get().get(InfinityMiner.class).repairBlocks.set(List.of(context.getArgument("repair", BlockInput.class).getBlockState().getBlock())); + runInfinityMiner(); + } + } else { + throw SWARM_NOT_ACTIVE.create(); + } + return SINGLE_SUCCESS; + }))) + .then(literal("logout").then(argument("logout", BoolArgumentType.bool()).executes(context -> { + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput()); + } else if (swarm.isWorker()) { + Modules.get().get(InfinityMiner.class).logOut.set(BoolArgumentType.getBool(context, "logout")); + } + } else { + throw SWARM_NOT_ACTIVE.create(); } - } - else { - throw SWARM_NOT_ACTIVE.create(); - } - return SINGLE_SUCCESS; - }))) - .then(literal("walkhome").then(argument("walkhome", BoolArgumentType.bool()).executes(context -> { - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput()); - } else if (swarm.isWorker()) { - Modules.get().get(InfinityMiner.class).walkHome.set(BoolArgumentType.getBool(context, "walkhome")); + return SINGLE_SUCCESS; + }))) + .then(literal("walkhome").then(argument("walkhome", BoolArgumentType.bool()).executes(context -> { + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput()); + } else if (swarm.isWorker()) { + Modules.get().get(InfinityMiner.class).walkHome.set(BoolArgumentType.getBool(context, "walkhome")); + } + } else { + throw SWARM_NOT_ACTIVE.create(); } - } else { - throw SWARM_NOT_ACTIVE.create(); - } - return SINGLE_SUCCESS; - })))); + return SINGLE_SUCCESS; + })))); builder.then(literal("mine") - .then(argument("block", BlockStateArgumentType.blockState(REGISTRY_ACCESS)).executes(context -> { + .then(argument("block", BlockStateArgument.blockState(REGISTRY_ACCESS)).executes(context -> { + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput()); + } else if (swarm.isWorker()) { + swarm.worker.target = context.getArgument("block", BlockInput.class).getBlockState().getBlock(); + } + } else { + throw SWARM_NOT_ACTIVE.create(); + } + return SINGLE_SUCCESS; + })) + ); + + builder.then(literal("toggle") + .then(argument("module", ModuleArgumentType.create()) + .executes(context -> { Swarm swarm = Modules.get().get(Swarm.class); if (swarm.isActive()) { if (swarm.isHost()) { swarm.host.sendMessage(context.getInput()); } else if (swarm.isWorker()) { - swarm.worker.target = context.getArgument("block", BlockStateArgument.class).getBlockState().getBlock(); + Module module = ModuleArgumentType.get(context); + module.toggle(); } } else { throw SWARM_NOT_ACTIVE.create(); } return SINGLE_SUCCESS; - })) - ); - - builder.then(literal("toggle") - .then(argument("module", ModuleArgumentType.create()) - .executes(context -> { - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput()); - } else if (swarm.isWorker()) { - Module module = ModuleArgumentType.get(context); - module.toggle(); - } - } else { - throw SWARM_NOT_ACTIVE.create(); + }).then(literal("on") + .executes(context -> { + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput()); + } else if (swarm.isWorker()) { + Module m = ModuleArgumentType.get(context); + m.enable(); + } + } else { + throw SWARM_NOT_ACTIVE.create(); + } + return SINGLE_SUCCESS; + })).then(literal("off") + .executes(context -> { + Swarm swarm = Modules.get().get(Swarm.class); + if (swarm.isActive()) { + if (swarm.isHost()) { + swarm.host.sendMessage(context.getInput()); + } else if (swarm.isWorker()) { + Module m = ModuleArgumentType.get(context); + m.disable(); } - return SINGLE_SUCCESS; - }).then(literal("on") - .executes(context -> { - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput()); - } else if (swarm.isWorker()) { - Module m = ModuleArgumentType.get(context); - m.enable(); - } - } else { - throw SWARM_NOT_ACTIVE.create(); - } - return SINGLE_SUCCESS; - })).then(literal("off") - .executes(context -> { - Swarm swarm = Modules.get().get(Swarm.class); - if (swarm.isActive()) { - if (swarm.isHost()) { - swarm.host.sendMessage(context.getInput()); - } else if (swarm.isWorker()) { - Module m = ModuleArgumentType.get(context); - m.disable(); - } - } else { - throw SWARM_NOT_ACTIVE.create(); - } - return SINGLE_SUCCESS; - }) - ) + } else { + throw SWARM_NOT_ACTIVE.create(); + } + return SINGLE_SUCCESS; + }) ) + ) ); builder.then(literal("scatter").executes(context -> { diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/ToggleCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/ToggleCommand.java index c7fdbdd5e6..206c93be92 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/ToggleCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/ToggleCommand.java @@ -11,7 +11,7 @@ import meteordevelopment.meteorclient.systems.hud.Hud; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; -import net.minecraft.command.CommandSource; +import net.minecraft.commands.SharedSuggestionProvider; import java.util.ArrayList; @@ -21,7 +21,7 @@ public ToggleCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder .then(literal("all") .then(literal("on") diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java index 13124e5a54..375ab56b6e 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/VClipCommand.java @@ -8,9 +8,9 @@ import com.mojang.brigadier.arguments.DoubleArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; import meteordevelopment.meteorclient.commands.Command; -import net.minecraft.command.CommandSource; -import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; -import net.minecraft.network.packet.c2s.play.VehicleMoveC2SPacket; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; +import net.minecraft.network.protocol.game.ServerboundMoveVehiclePacket; public class VClipCommand extends Command { public VClipCommand() { @@ -18,7 +18,7 @@ public VClipCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(argument("blocks", DoubleArgumentType.doubleArg()).executes(context -> { double blocks = context.getArgument("blocks", Double.class); @@ -40,19 +40,19 @@ public void build(LiteralArgumentBuilder builder) { // Vehicle version // For each 10 blocks, send a vehicle move packet with no delta for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) { - mc.player.networkHandler.sendPacket(VehicleMoveC2SPacket.fromVehicle(mc.player.getVehicle())); + mc.player.networkHandler.sendPacket(ServerboundMoveVehiclePacket.fromVehicle(mc.player.getVehicle())); } // Now send the final vehicle move packet mc.player.getVehicle().setPosition(mc.player.getVehicle().getX(), mc.player.getVehicle().getY() + blocks, mc.player.getVehicle().getZ()); - mc.player.networkHandler.sendPacket(VehicleMoveC2SPacket.fromVehicle(mc.player.getVehicle())); + mc.player.networkHandler.sendPacket(ServerboundMoveVehiclePacket.fromVehicle(mc.player.getVehicle())); } else { // No vehicle version // For each 10 blocks, send a player move packet with no delta for (int packetNumber = 0; packetNumber < (packetsRequired - 1); packetNumber++) { - mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(true, mc.player.horizontalCollision)); + mc.player.networkHandler.sendPacket(new ServerboundMovePlayerPacket.OnGroundOnly(true, mc.player.horizontalCollision)); } // Now send the final player move packet - mc.player.networkHandler.sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(mc.player.getX(), mc.player.getY() + blocks, mc.player.getZ(), true, mc.player.horizontalCollision)); + mc.player.networkHandler.sendPacket(new ServerboundMovePlayerPacket.PositionAndOnGround(mc.player.getX(), mc.player.getY() + blocks, mc.player.getZ(), true, mc.player.horizontalCollision)); mc.player.setPosition(mc.player.getX(), mc.player.getY() + blocks, mc.player.getZ()); } diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java index fe9ce8a74a..70bdb3fccd 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/WaspCommand.java @@ -11,19 +11,19 @@ import meteordevelopment.meteorclient.commands.arguments.PlayerArgumentType; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.AutoWasp; -import net.minecraft.command.CommandSource; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.text.Text; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.chat.Component; public class WaspCommand extends Command { - private static final SimpleCommandExceptionType CANT_WASP_SELF = new SimpleCommandExceptionType(Text.literal("You cannot target yourself!")); + private static final SimpleCommandExceptionType CANT_WASP_SELF = new SimpleCommandExceptionType(Component.literal("You cannot target yourself!")); public WaspCommand() { super("wasp", "Sets the auto wasp target."); } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { AutoWasp wasp = Modules.get().get(AutoWasp.class); builder.then(literal("reset").executes(context -> { @@ -32,7 +32,7 @@ public void build(LiteralArgumentBuilder builder) { })); builder.then(argument("player", PlayerArgumentType.create()).executes(context -> { - PlayerEntity player = PlayerArgumentType.get(context); + Player player = PlayerArgumentType.get(context); if (player == mc.player) throw CANT_WASP_SELF.create(); diff --git a/src/main/java/meteordevelopment/meteorclient/commands/commands/WaypointCommand.java b/src/main/java/meteordevelopment/meteorclient/commands/commands/WaypointCommand.java index 54082c09c2..6bb18a3c8b 100644 --- a/src/main/java/meteordevelopment/meteorclient/commands/commands/WaypointCommand.java +++ b/src/main/java/meteordevelopment/meteorclient/commands/commands/WaypointCommand.java @@ -14,9 +14,9 @@ import meteordevelopment.meteorclient.systems.waypoints.Waypoint; import meteordevelopment.meteorclient.systems.waypoints.Waypoints; import meteordevelopment.meteorclient.utils.player.PlayerUtils; -import net.minecraft.command.CommandSource; -import net.minecraft.util.Formatting; -import net.minecraft.util.math.BlockPos; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; public class WaypointCommand extends Command { public WaypointCommand() { @@ -24,11 +24,11 @@ public WaypointCommand() { } @Override - public void build(LiteralArgumentBuilder builder) { + public void build(LiteralArgumentBuilder builder) { builder.then(literal("list").executes(context -> { if (Waypoints.get().isEmpty()) error("No created waypoints."); else { - info(Formatting.WHITE + "Created Waypoints:"); + info(ChatFormatting.WHITE + "Created Waypoints:"); for (Waypoint waypoint : Waypoints.get()) { info("Name: (highlight)'%s'(default), Dimension: (highlight)%s(default), Pos: (highlight)%s(default)", waypoint.name.get(), waypoint.dimension.get(), waypointPos(waypoint)); } @@ -38,10 +38,10 @@ public void build(LiteralArgumentBuilder builder) { builder.then(literal("get").then(argument("waypoint", WaypointArgumentType.create()).executes(context -> { Waypoint waypoint = WaypointArgumentType.get(context); - info("Name: " + Formatting.WHITE + waypoint.name.get()); - info("Actual Dimension: " + Formatting.WHITE + waypoint.dimension.get()); - info("Position: " + Formatting.WHITE + waypointFullPos(waypoint)); - info("Visible: " + (waypoint.visible.get() ? Formatting.GREEN + "True" : Formatting.RED + "False")); + info("Name: " + ChatFormatting.WHITE + waypoint.name.get()); + info("Actual Dimension: " + ChatFormatting.WHITE + waypoint.dimension.get()); + info("Position: " + ChatFormatting.WHITE + waypointFullPos(waypoint)); + info("Visible: " + (waypoint.visible.get() ? ChatFormatting.GREEN + "True" : ChatFormatting.RED + "False")); return SINGLE_SUCCESS; }))); @@ -80,7 +80,7 @@ private String waypointFullPos(Waypoint waypoint) { return "X: " + waypoint.pos.get().getX() + ", Y: " + waypoint.pos.get().getY() + ", Z: " + waypoint.pos.get().getZ(); } - private int addWaypoint(CommandContext context, boolean withCoords) { + private int addWaypoint(CommandContext context, boolean withCoords) { if (mc.player == null) return -1; BlockPos pos = withCoords ? BlockPosArgumentType.getBlockPos(context, "pos") : mc.player.getBlockPos().up(2); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/BoatMoveEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/BoatMoveEvent.java index 6abc337460..a63af9addb 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/BoatMoveEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/BoatMoveEvent.java @@ -5,14 +5,14 @@ package meteordevelopment.meteorclient.events.entity; -import net.minecraft.entity.vehicle.AbstractBoatEntity; +import net.minecraft.world.entity.vehicle.boat.AbstractBoat; public class BoatMoveEvent { private static final BoatMoveEvent INSTANCE = new BoatMoveEvent(); - public AbstractBoatEntity boat; + public AbstractBoat boat; - public static BoatMoveEvent get(AbstractBoatEntity entity) { + public static BoatMoveEvent get(AbstractBoat entity) { INSTANCE.boat = entity; return INSTANCE; } diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/DropItemsEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/DropItemsEvent.java index 42ebe9f960..b8611cc09f 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/DropItemsEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/DropItemsEvent.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.events.entity; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.item.ItemStack; +import net.minecraft.world.item.ItemStack; public class DropItemsEvent extends Cancellable { private static final DropItemsEvent INSTANCE = new DropItemsEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/EntityAddedEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/EntityAddedEvent.java index 639373073e..ca58b51009 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/EntityAddedEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/EntityAddedEvent.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.events.entity; -import net.minecraft.entity.Entity; +import net.minecraft.world.entity.Entity; public class EntityAddedEvent { private static final EntityAddedEvent INSTANCE = new EntityAddedEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/EntityDestroyEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/EntityDestroyEvent.java index 05ffc91df3..4c0cebd6b9 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/EntityDestroyEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/EntityDestroyEvent.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.events.entity; -import net.minecraft.entity.Entity; +import net.minecraft.world.entity.Entity; public class EntityDestroyEvent { private static final EntityDestroyEvent INSTANCE = new EntityDestroyEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/EntityMoveEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/EntityMoveEvent.java index 060712ab06..513c788d8e 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/EntityMoveEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/EntityMoveEvent.java @@ -5,16 +5,16 @@ package meteordevelopment.meteorclient.events.entity; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.Vec3d; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; public class EntityMoveEvent { private static final EntityMoveEvent INSTANCE = new EntityMoveEvent(); public Entity entity; - public Vec3d movement; + public Vec3 movement; - public static EntityMoveEvent get(Entity entity, Vec3d movement) { + public static EntityMoveEvent get(Entity entity, Vec3 movement) { INSTANCE.entity = entity; INSTANCE.movement = movement; return INSTANCE; diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/EntityRemovedEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/EntityRemovedEvent.java index b531cad1e2..9331c77f19 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/EntityRemovedEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/EntityRemovedEvent.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.events.entity; -import net.minecraft.entity.Entity; +import net.minecraft.world.entity.Entity; public class EntityRemovedEvent { private static final EntityRemovedEvent INSTANCE = new EntityRemovedEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/AttackEntityEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/AttackEntityEvent.java index 2982cd5b4a..4c78f8fdb5 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/AttackEntityEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/AttackEntityEvent.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.events.entity.player; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.entity.Entity; +import net.minecraft.world.entity.Entity; public class AttackEntityEvent extends Cancellable { private static final AttackEntityEvent INSTANCE = new AttackEntityEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/BreakBlockEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/BreakBlockEvent.java index bbea3fc82e..2cd3444155 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/BreakBlockEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/BreakBlockEvent.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.events.entity.player; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.util.math.BlockPos; +import net.minecraft.core.BlockPos; public class BreakBlockEvent extends Cancellable { private static final BreakBlockEvent INSTANCE = new BreakBlockEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/CanWalkOnFluidEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/CanWalkOnFluidEvent.java index e5fbfabe68..fbf02eaa55 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/CanWalkOnFluidEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/CanWalkOnFluidEvent.java @@ -5,9 +5,9 @@ package meteordevelopment.meteorclient.events.entity.player; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.material.FluidState; /** * As of writing, using any method that gets the players pose within this event will cause a crash. diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/FinishUsingItemEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/FinishUsingItemEvent.java index 37a02f09d7..1f7d77ab39 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/FinishUsingItemEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/FinishUsingItemEvent.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.events.entity.player; -import net.minecraft.item.ItemStack; +import net.minecraft.world.item.ItemStack; public class FinishUsingItemEvent { private static final FinishUsingItemEvent INSTANCE = new FinishUsingItemEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractBlockEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractBlockEvent.java index d1055d38c6..5cf52f72a6 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractBlockEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractBlockEvent.java @@ -6,16 +6,16 @@ package meteordevelopment.meteorclient.events.entity.player; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.phys.BlockHitResult; public class InteractBlockEvent extends Cancellable { private static final InteractBlockEvent INSTANCE = new InteractBlockEvent(); - public Hand hand; + public InteractionHand hand; public BlockHitResult result; - public static InteractBlockEvent get(Hand hand, BlockHitResult result) { + public static InteractBlockEvent get(InteractionHand hand, BlockHitResult result) { INSTANCE.setCancelled(false); INSTANCE.hand = hand; INSTANCE.result = result; diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractEntityEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractEntityEvent.java index d0cba698f8..ce6611ac52 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractEntityEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractEntityEvent.java @@ -6,16 +6,16 @@ package meteordevelopment.meteorclient.events.entity.player; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.entity.Entity; -import net.minecraft.util.Hand; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.InteractionHand; public class InteractEntityEvent extends Cancellable { private static final InteractEntityEvent INSTANCE = new InteractEntityEvent(); public Entity entity; - public Hand hand; + public InteractionHand hand; - public static InteractEntityEvent get(Entity entity, Hand hand) { + public static InteractEntityEvent get(Entity entity, InteractionHand hand) { INSTANCE.setCancelled(false); INSTANCE.entity = entity; INSTANCE.hand = hand; diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractItemEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractItemEvent.java index 4da48cc1db..85a3a71eeb 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractItemEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/InteractItemEvent.java @@ -5,16 +5,16 @@ package meteordevelopment.meteorclient.events.entity.player; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; public class InteractItemEvent { private static final InteractItemEvent INSTANCE = new InteractItemEvent(); - public Hand hand; - public ActionResult toReturn; + public InteractionHand hand; + public InteractionResult toReturn; - public static InteractItemEvent get(Hand hand) { + public static InteractItemEvent get(InteractionHand hand) { INSTANCE.hand = hand; INSTANCE.toReturn = null; diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/ItemUseCrosshairTargetEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/ItemUseCrosshairTargetEvent.java index 54aa247e0c..90ffa1edb3 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/ItemUseCrosshairTargetEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/ItemUseCrosshairTargetEvent.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.events.entity.player; -import net.minecraft.util.hit.HitResult; +import net.minecraft.world.phys.HitResult; public class ItemUseCrosshairTargetEvent { private static final ItemUseCrosshairTargetEvent INSTANCE = new ItemUseCrosshairTargetEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/PickItemsEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/PickItemsEvent.java index 2d17e32965..6dc33ae491 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/PickItemsEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/PickItemsEvent.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.events.entity.player; -import net.minecraft.item.ItemStack; +import net.minecraft.world.item.ItemStack; public class PickItemsEvent { private static final PickItemsEvent INSTANCE = new PickItemsEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlaceBlockEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlaceBlockEvent.java index f38a18a802..cc21aa2a97 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlaceBlockEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlaceBlockEvent.java @@ -6,8 +6,8 @@ package meteordevelopment.meteorclient.events.entity.player; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.block.Block; -import net.minecraft.util.math.BlockPos; +import net.minecraft.world.level.block.Block; +import net.minecraft.core.BlockPos; public class PlaceBlockEvent extends Cancellable { private static final PlaceBlockEvent INSTANCE = new PlaceBlockEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlayerMoveEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlayerMoveEvent.java index a9facc6452..faa1dfbdac 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlayerMoveEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/PlayerMoveEvent.java @@ -5,16 +5,16 @@ package meteordevelopment.meteorclient.events.entity.player; -import net.minecraft.entity.MovementType; -import net.minecraft.util.math.Vec3d; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.phys.Vec3; public class PlayerMoveEvent { private static final PlayerMoveEvent INSTANCE = new PlayerMoveEvent(); - public MovementType type; - public Vec3d movement; + public MoverType type; + public Vec3 movement; - public static PlayerMoveEvent get(MovementType type, Vec3d movement) { + public static PlayerMoveEvent get(MoverType type, Vec3 movement) { INSTANCE.type = type; INSTANCE.movement = movement; return INSTANCE; diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/StartBreakingBlockEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/StartBreakingBlockEvent.java index d799efb15a..e51532cca7 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/StartBreakingBlockEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/StartBreakingBlockEvent.java @@ -6,8 +6,8 @@ package meteordevelopment.meteorclient.events.entity.player; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; public class StartBreakingBlockEvent extends Cancellable { private static final StartBreakingBlockEvent INSTANCE = new StartBreakingBlockEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/entity/player/StoppedUsingItemEvent.java b/src/main/java/meteordevelopment/meteorclient/events/entity/player/StoppedUsingItemEvent.java index 394dcb61ef..8daec28cf8 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/entity/player/StoppedUsingItemEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/entity/player/StoppedUsingItemEvent.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.events.entity.player; -import net.minecraft.item.ItemStack; +import net.minecraft.world.item.ItemStack; public class StoppedUsingItemEvent { private static final StoppedUsingItemEvent INSTANCE = new StoppedUsingItemEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/game/ChangePerspectiveEvent.java b/src/main/java/meteordevelopment/meteorclient/events/game/ChangePerspectiveEvent.java index 746ff7701b..c1cb4fa51b 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/game/ChangePerspectiveEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/game/ChangePerspectiveEvent.java @@ -6,14 +6,14 @@ package meteordevelopment.meteorclient.events.game; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.client.option.Perspective; +import net.minecraft.client.CameraType; public class ChangePerspectiveEvent extends Cancellable { private static final ChangePerspectiveEvent INSTANCE = new ChangePerspectiveEvent(); - public Perspective perspective; + public CameraType perspective; - public static ChangePerspectiveEvent get(Perspective perspective) { + public static ChangePerspectiveEvent get(CameraType perspective) { INSTANCE.setCancelled(false); INSTANCE.perspective = perspective; return INSTANCE; diff --git a/src/main/java/meteordevelopment/meteorclient/events/game/ItemStackTooltipEvent.java b/src/main/java/meteordevelopment/meteorclient/events/game/ItemStackTooltipEvent.java index 9a5bbf8d21..0f580655b1 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/game/ItemStackTooltipEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/game/ItemStackTooltipEvent.java @@ -6,21 +6,21 @@ package meteordevelopment.meteorclient.events.game; import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import net.minecraft.item.ItemStack; -import net.minecraft.text.Text; +import net.minecraft.world.item.ItemStack; +import net.minecraft.network.chat.Component; import java.util.List; public class ItemStackTooltipEvent { private final ItemStack itemStack; - private List list; + private List list; - public ItemStackTooltipEvent(ItemStack itemStack, List list) { + public ItemStackTooltipEvent(ItemStack itemStack, List list) { this.itemStack = itemStack; this.list = list; } - public List list() { + public List list() { return list; } @@ -28,23 +28,23 @@ public ItemStack itemStack() { return itemStack; } - public void appendStart(Text text) { + public void appendStart(Component text) { copyIfImmutable(); int index = list.isEmpty() ? 0 : 1; list.add(index, text); } - public void appendEnd(Text text) { + public void appendEnd(Component text) { copyIfImmutable(); list.add(text); } - public void append(int index, Text text) { + public void append(int index, Component text) { copyIfImmutable(); list.add(index, text); } - public void set(int index, Text text) { + public void set(int index, Component text) { copyIfImmutable(); list.set(index, text); } diff --git a/src/main/java/meteordevelopment/meteorclient/events/game/OpenScreenEvent.java b/src/main/java/meteordevelopment/meteorclient/events/game/OpenScreenEvent.java index ad74317e88..d6d3db5ff7 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/game/OpenScreenEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/game/OpenScreenEvent.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.events.game; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; public class OpenScreenEvent extends Cancellable { private static final OpenScreenEvent INSTANCE = new OpenScreenEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/game/ReceiveMessageEvent.java b/src/main/java/meteordevelopment/meteorclient/events/game/ReceiveMessageEvent.java index ac5f158364..d762768434 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/game/ReceiveMessageEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/game/ReceiveMessageEvent.java @@ -6,18 +6,18 @@ package meteordevelopment.meteorclient.events.game; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.client.gui.hud.MessageIndicator; -import net.minecraft.text.Text; +import net.minecraft.client.GuiMessageTag; +import net.minecraft.network.chat.Component; public class ReceiveMessageEvent extends Cancellable { private static final ReceiveMessageEvent INSTANCE = new ReceiveMessageEvent(); - private Text message; - private MessageIndicator indicator; + private Component message; + private GuiMessageTag indicator; private boolean modified; public int id; - public static ReceiveMessageEvent get(Text message, MessageIndicator indicator, int id) { + public static ReceiveMessageEvent get(Component message, GuiMessageTag indicator, int id) { INSTANCE.setCancelled(false); INSTANCE.message = message; INSTANCE.indicator = indicator; @@ -26,20 +26,20 @@ public static ReceiveMessageEvent get(Text message, MessageIndicator indicator, return INSTANCE; } - public Text getMessage() { + public Component getMessage() { return message; } - public MessageIndicator getIndicator() { + public GuiMessageTag getIndicator() { return indicator; } - public void setMessage(Text message) { + public void setMessage(Component message) { this.message = message; this.modified = true; } - public void setIndicator(MessageIndicator indicator) { + public void setIndicator(GuiMessageTag indicator) { this.indicator = indicator; this.modified = true; } diff --git a/src/main/java/meteordevelopment/meteorclient/events/meteor/KeyEvent.java b/src/main/java/meteordevelopment/meteorclient/events/meteor/KeyEvent.java index e569d9f605..52f097ffc5 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/meteor/KeyEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/meteor/KeyEvent.java @@ -7,15 +7,15 @@ import meteordevelopment.meteorclient.events.Cancellable; import meteordevelopment.meteorclient.utils.misc.input.KeyAction; -import net.minecraft.client.input.KeyInput; +import net.minecraft.client.input.KeyEvent; public class KeyEvent extends Cancellable { private static final KeyEvent INSTANCE = new KeyEvent(); - public KeyInput input; + public net.minecraft.client.input.KeyEvent input; public KeyAction action; - public static KeyEvent get(KeyInput input, KeyAction action) { + public static KeyEvent get(net.minecraft.client.input.KeyEvent input, KeyAction action) { INSTANCE.setCancelled(false); INSTANCE.input = input; INSTANCE.action = action; diff --git a/src/main/java/meteordevelopment/meteorclient/events/meteor/MouseClickEvent.java b/src/main/java/meteordevelopment/meteorclient/events/meteor/MouseClickEvent.java index 9c5d679a04..ff98360486 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/meteor/MouseClickEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/meteor/MouseClickEvent.java @@ -7,17 +7,17 @@ import meteordevelopment.meteorclient.events.Cancellable; import meteordevelopment.meteorclient.utils.misc.input.KeyAction; -import net.minecraft.client.gui.Click; -import net.minecraft.client.input.MouseInput; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.input.MouseButtonInfo; public class MouseClickEvent extends Cancellable { private static final MouseClickEvent INSTANCE = new MouseClickEvent(); - public Click click; - public MouseInput input; + public MouseButtonEvent click; + public MouseButtonInfo input; public KeyAction action; - public static MouseClickEvent get(Click click, KeyAction action) { + public static MouseClickEvent get(MouseButtonEvent click, KeyAction action) { INSTANCE.setCancelled(false); INSTANCE.click = click; INSTANCE.input = click.buttonInfo(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/packets/ContainerSlotUpdateEvent.java b/src/main/java/meteordevelopment/meteorclient/events/packets/ContainerSlotUpdateEvent.java index 8c81ee2d12..04fe4e95d7 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/packets/ContainerSlotUpdateEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/packets/ContainerSlotUpdateEvent.java @@ -5,14 +5,14 @@ package meteordevelopment.meteorclient.events.packets; -import net.minecraft.network.packet.s2c.play.ScreenHandlerSlotUpdateS2CPacket; +import net.minecraft.network.protocol.game.ClientboundContainerSetSlotPacket; public class ContainerSlotUpdateEvent { private static final ContainerSlotUpdateEvent INSTANCE = new ContainerSlotUpdateEvent(); - public ScreenHandlerSlotUpdateS2CPacket packet; + public ClientboundContainerSetSlotPacket packet; - public static ContainerSlotUpdateEvent get(ScreenHandlerSlotUpdateS2CPacket packet) { + public static ContainerSlotUpdateEvent get(ClientboundContainerSetSlotPacket packet) { INSTANCE.packet = packet; return INSTANCE; } diff --git a/src/main/java/meteordevelopment/meteorclient/events/packets/InventoryEvent.java b/src/main/java/meteordevelopment/meteorclient/events/packets/InventoryEvent.java index 86fb87db82..37c3c898c2 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/packets/InventoryEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/packets/InventoryEvent.java @@ -5,14 +5,14 @@ package meteordevelopment.meteorclient.events.packets; -import net.minecraft.network.packet.s2c.play.InventoryS2CPacket; +import net.minecraft.network.protocol.game.ClientboundContainerSetContentPacket; public class InventoryEvent { private static final InventoryEvent INSTANCE = new InventoryEvent(); - public InventoryS2CPacket packet; + public ClientboundContainerSetContentPacket packet; - public static InventoryEvent get(InventoryS2CPacket packet) { + public static InventoryEvent get(ClientboundContainerSetContentPacket packet) { INSTANCE.packet = packet; return INSTANCE; } diff --git a/src/main/java/meteordevelopment/meteorclient/events/packets/PacketEvent.java b/src/main/java/meteordevelopment/meteorclient/events/packets/PacketEvent.java index 977f8a1836..98d98c1bb3 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/packets/PacketEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/packets/PacketEvent.java @@ -6,15 +6,15 @@ package meteordevelopment.meteorclient.events.packets; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.network.ClientConnection; -import net.minecraft.network.packet.Packet; +import net.minecraft.network.Connection; +import net.minecraft.network.protocol.Packet; public class PacketEvent { public static class Receive extends Cancellable { public Packet packet; - public ClientConnection connection; + public Connection connection; - public Receive(Packet packet, ClientConnection connection) { + public Receive(Packet packet, Connection connection) { this.setCancelled(false); this.packet = packet; this.connection = connection; @@ -23,9 +23,9 @@ public Receive(Packet packet, ClientConnection connection) { public static class Send extends Cancellable { public Packet packet; - public ClientConnection connection; + public Connection connection; - public Send(Packet packet, ClientConnection connection) { + public Send(Packet packet, Connection connection) { this.setCancelled(false); this.packet = packet; this.connection = connection; @@ -44,9 +44,9 @@ public void sendSilently(Packet packet) { public static class Sent { public Packet packet; - public ClientConnection connection; + public Connection connection; - public Sent(Packet packet, ClientConnection connection) { + public Sent(Packet packet, Connection connection) { this.packet = packet; this.connection = connection; } diff --git a/src/main/java/meteordevelopment/meteorclient/events/packets/PlaySoundPacketEvent.java b/src/main/java/meteordevelopment/meteorclient/events/packets/PlaySoundPacketEvent.java index 14cdeec2ac..8b43385378 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/packets/PlaySoundPacketEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/packets/PlaySoundPacketEvent.java @@ -5,15 +5,15 @@ package meteordevelopment.meteorclient.events.packets; -import net.minecraft.network.packet.s2c.play.PlaySoundS2CPacket; +import net.minecraft.network.protocol.game.ClientboundSoundPacket; public class PlaySoundPacketEvent { private static final PlaySoundPacketEvent INSTANCE = new PlaySoundPacketEvent(); - public PlaySoundS2CPacket packet; + public ClientboundSoundPacket packet; - public static PlaySoundPacketEvent get(PlaySoundS2CPacket packet) { + public static PlaySoundPacketEvent get(ClientboundSoundPacket packet) { INSTANCE.packet = packet; return INSTANCE; } diff --git a/src/main/java/meteordevelopment/meteorclient/events/render/ApplyTransformationEvent.java b/src/main/java/meteordevelopment/meteorclient/events/render/ApplyTransformationEvent.java index 0361485e68..2ee1a55321 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/render/ApplyTransformationEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/render/ApplyTransformationEvent.java @@ -6,15 +6,15 @@ package meteordevelopment.meteorclient.events.render; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.client.render.model.json.Transformation; +import net.minecraft.client.renderer.block.model.ItemTransform; public class ApplyTransformationEvent extends Cancellable { private static final ApplyTransformationEvent INSTANCE = new ApplyTransformationEvent(); - public Transformation transformation; + public ItemTransform transformation; public boolean leftHanded; - public static ApplyTransformationEvent get(Transformation transformation, boolean leftHanded) { + public static ApplyTransformationEvent get(ItemTransform transformation, boolean leftHanded) { INSTANCE.setCancelled(false); INSTANCE.transformation = transformation; diff --git a/src/main/java/meteordevelopment/meteorclient/events/render/ArmRenderEvent.java b/src/main/java/meteordevelopment/meteorclient/events/render/ArmRenderEvent.java index 775b653ca5..4ccea92c7d 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/render/ArmRenderEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/render/ArmRenderEvent.java @@ -6,16 +6,16 @@ package meteordevelopment.meteorclient.events.render; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.Hand; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.world.InteractionHand; public class ArmRenderEvent { public static ArmRenderEvent INSTANCE = new ArmRenderEvent(); - public MatrixStack matrix; - public Hand hand; + public PoseStack matrix; + public InteractionHand hand; - public static ArmRenderEvent get(Hand hand, MatrixStack matrices) { + public static ArmRenderEvent get(InteractionHand hand, PoseStack matrices) { INSTANCE.matrix = matrices; INSTANCE.hand = hand; diff --git a/src/main/java/meteordevelopment/meteorclient/events/render/HeldItemRendererEvent.java b/src/main/java/meteordevelopment/meteorclient/events/render/HeldItemRendererEvent.java index defe8c6110..915160067c 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/render/HeldItemRendererEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/render/HeldItemRendererEvent.java @@ -5,16 +5,16 @@ package meteordevelopment.meteorclient.events.render; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.Hand; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.world.InteractionHand; public class HeldItemRendererEvent { private static final HeldItemRendererEvent INSTANCE = new HeldItemRendererEvent(); - public Hand hand; - public MatrixStack matrix; + public InteractionHand hand; + public PoseStack matrix; - public static HeldItemRendererEvent get(Hand hand, MatrixStack matrices) { + public static HeldItemRendererEvent get(InteractionHand hand, PoseStack matrices) { INSTANCE.hand = hand; INSTANCE.matrix = matrices; return INSTANCE; diff --git a/src/main/java/meteordevelopment/meteorclient/events/render/Render2DEvent.java b/src/main/java/meteordevelopment/meteorclient/events/render/Render2DEvent.java index e394606e29..8537ebb5c9 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/render/Render2DEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/render/Render2DEvent.java @@ -6,17 +6,17 @@ package meteordevelopment.meteorclient.events.render; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.GuiGraphics; public class Render2DEvent { private static final Render2DEvent INSTANCE = new Render2DEvent(); - public DrawContext drawContext; + public GuiGraphics drawContext; public int screenWidth, screenHeight; public double frameTime; public float tickDelta; - public static Render2DEvent get(DrawContext drawContext, int screenWidth, int screenHeight, float tickDelta) { + public static Render2DEvent get(GuiGraphics drawContext, int screenWidth, int screenHeight, float tickDelta) { INSTANCE.drawContext = drawContext; INSTANCE.screenWidth = screenWidth; INSTANCE.screenHeight = screenHeight; diff --git a/src/main/java/meteordevelopment/meteorclient/events/render/Render3DEvent.java b/src/main/java/meteordevelopment/meteorclient/events/render/Render3DEvent.java index 3c212c7057..9da14824f5 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/render/Render3DEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/render/Render3DEvent.java @@ -7,19 +7,19 @@ import meteordevelopment.meteorclient.renderer.Renderer3D; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.client.util.math.MatrixStack; +import com.mojang.blaze3d.vertex.PoseStack; public class Render3DEvent { private static final Render3DEvent INSTANCE = new Render3DEvent(); - public MatrixStack matrices; + public PoseStack matrices; public Renderer3D renderer; public Renderer3D depthRenderer; public double frameTime; public float tickDelta; public double offsetX, offsetY, offsetZ; - public static Render3DEvent get(MatrixStack matrices, Renderer3D renderer, Renderer3D depthRenderer, float tickDelta, double offsetX, double offsetY, double offsetZ) { + public static Render3DEvent get(PoseStack matrices, Renderer3D renderer, Renderer3D depthRenderer, float tickDelta, double offsetX, double offsetY, double offsetZ) { INSTANCE.matrices = matrices; INSTANCE.renderer = renderer; INSTANCE.depthRenderer = depthRenderer; diff --git a/src/main/java/meteordevelopment/meteorclient/events/render/RenderBlockEntityEvent.java b/src/main/java/meteordevelopment/meteorclient/events/render/RenderBlockEntityEvent.java index 27c1595816..5b29079f9e 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/render/RenderBlockEntityEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/render/RenderBlockEntityEvent.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.events.render; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.client.render.block.entity.state.BlockEntityRenderState; +import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState; public class RenderBlockEntityEvent extends Cancellable { private static final RenderBlockEntityEvent INSTANCE = new RenderBlockEntityEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/render/RenderBossBarEvent.java b/src/main/java/meteordevelopment/meteorclient/events/render/RenderBossBarEvent.java index 44cc227457..371d194baf 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/render/RenderBossBarEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/render/RenderBossBarEvent.java @@ -5,8 +5,8 @@ package meteordevelopment.meteorclient.events.render; -import net.minecraft.client.gui.hud.ClientBossBar; -import net.minecraft.text.Text; +import net.minecraft.client.gui.components.LerpingBossEvent; +import net.minecraft.network.chat.Component; import java.util.Iterator; @@ -14,10 +14,10 @@ public class RenderBossBarEvent { public static class BossText { private static final BossText INSTANCE = new BossText(); - public ClientBossBar bossBar; - public Text name; + public LerpingBossEvent bossBar; + public Component name; - public static BossText get(ClientBossBar bossBar, Text name) { + public static BossText get(LerpingBossEvent bossBar, Component name) { INSTANCE.bossBar = bossBar; INSTANCE.name = name; return INSTANCE; @@ -38,9 +38,9 @@ public static BossSpacing get(int spacing) { public static class BossIterator { private static final BossIterator INSTANCE = new BossIterator(); - public Iterator iterator; + public Iterator iterator; - public static BossIterator get(Iterator iterator) { + public static BossIterator get(Iterator iterator) { INSTANCE.iterator = iterator; return INSTANCE; } diff --git a/src/main/java/meteordevelopment/meteorclient/events/render/RenderItemEntityEvent.java b/src/main/java/meteordevelopment/meteorclient/events/render/RenderItemEntityEvent.java index fcf0cfb249..698afe0c0e 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/render/RenderItemEntityEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/render/RenderItemEntityEvent.java @@ -7,12 +7,12 @@ import meteordevelopment.meteorclient.events.Cancellable; import meteordevelopment.meteorclient.mixininterface.IEntityRenderState; -import net.minecraft.client.item.ItemModelManager; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.entity.state.ItemEntityRenderState; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.ItemEntity; +import net.minecraft.client.renderer.item.ItemModelResolver; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.state.ItemEntityRenderState; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.world.entity.item.ItemEntity; import org.jspecify.annotations.Nullable; public class RenderItemEntityEvent extends Cancellable { @@ -22,13 +22,13 @@ public class RenderItemEntityEvent extends Cancellable { public ItemEntity itemEntity; public ItemEntityRenderState renderState; public float tickDelta; - public MatrixStack matrixStack; - public VertexConsumerProvider vertexConsumerProvider; + public PoseStack matrixStack; + public MultiBufferSource vertexConsumerProvider; public int light; - public ItemModelManager itemModelManager; - public OrderedRenderCommandQueue renderCommandQueue; + public ItemModelResolver itemModelManager; + public SubmitNodeCollector renderCommandQueue; - public static RenderItemEntityEvent get(ItemEntityRenderState renderState, float tickDelta, MatrixStack matrixStack, VertexConsumerProvider vertexConsumerProvider, int light, ItemModelManager itemModelManager, OrderedRenderCommandQueue renderCommandQueue) { + public static RenderItemEntityEvent get(ItemEntityRenderState renderState, float tickDelta, PoseStack matrixStack, MultiBufferSource vertexConsumerProvider, int light, ItemModelResolver itemModelManager, SubmitNodeCollector renderCommandQueue) { INSTANCE.setCancelled(false); INSTANCE.itemEntity = (ItemEntity) ((IEntityRenderState) renderState).meteor$getEntity(); INSTANCE.renderState = renderState; diff --git a/src/main/java/meteordevelopment/meteorclient/events/render/TooltipDataEvent.java b/src/main/java/meteordevelopment/meteorclient/events/render/TooltipDataEvent.java index f632f4fb88..d70c247071 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/render/TooltipDataEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/render/TooltipDataEvent.java @@ -5,14 +5,14 @@ package meteordevelopment.meteorclient.events.render; -import net.minecraft.item.tooltip.TooltipData; -import net.minecraft.item.ItemStack; +import net.minecraft.world.inventory.tooltip.TooltipComponent; +import net.minecraft.world.item.ItemStack; public class TooltipDataEvent { private static final TooltipDataEvent INSTANCE = new TooltipDataEvent(); - public TooltipData tooltipData; + public TooltipComponent tooltipData; public ItemStack itemStack; public static TooltipDataEvent get(ItemStack itemStack) { diff --git a/src/main/java/meteordevelopment/meteorclient/events/world/BlockActivateEvent.java b/src/main/java/meteordevelopment/meteorclient/events/world/BlockActivateEvent.java index 52d082568f..f6730f9e29 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/world/BlockActivateEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/world/BlockActivateEvent.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.events.world; -import net.minecraft.block.BlockState; +import net.minecraft.world.level.block.state.BlockState; public class BlockActivateEvent { private static final BlockActivateEvent INSTANCE = new BlockActivateEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/world/BlockUpdateEvent.java b/src/main/java/meteordevelopment/meteorclient/events/world/BlockUpdateEvent.java index f4e0b583d9..57b8bcc0b6 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/world/BlockUpdateEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/world/BlockUpdateEvent.java @@ -5,8 +5,8 @@ package meteordevelopment.meteorclient.events.world; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.BlockPos; public class BlockUpdateEvent { private static final BlockUpdateEvent INSTANCE = new BlockUpdateEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/world/ChunkDataEvent.java b/src/main/java/meteordevelopment/meteorclient/events/world/ChunkDataEvent.java index 438c8f1f57..a04303fc63 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/world/ChunkDataEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/world/ChunkDataEvent.java @@ -5,10 +5,11 @@ package meteordevelopment.meteorclient.events.world; -import net.minecraft.world.chunk.WorldChunk; +import net.minecraft.world.level.chunk.LevelChunk; /** - * @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. * @author Crosby + * @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. */ -public record ChunkDataEvent(WorldChunk chunk) {} +public record ChunkDataEvent(LevelChunk chunk) { +} diff --git a/src/main/java/meteordevelopment/meteorclient/events/world/CollisionShapeEvent.java b/src/main/java/meteordevelopment/meteorclient/events/world/CollisionShapeEvent.java index b759780555..0853efacb8 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/world/CollisionShapeEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/world/CollisionShapeEvent.java @@ -7,9 +7,9 @@ import com.mojang.blaze3d.systems.RenderSystem; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.shapes.VoxelShape; public class CollisionShapeEvent extends Cancellable { private static final CollisionShapeEvent INSTANCE = new CollisionShapeEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/world/ParticleEvent.java b/src/main/java/meteordevelopment/meteorclient/events/world/ParticleEvent.java index 923c0ca82f..7ea54bae25 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/world/ParticleEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/world/ParticleEvent.java @@ -6,14 +6,14 @@ package meteordevelopment.meteorclient.events.world; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.particle.ParticleEffect; +import net.minecraft.core.particles.ParticleOptions; public class ParticleEvent extends Cancellable { private static final ParticleEvent INSTANCE = new ParticleEvent(); - public ParticleEffect particle; + public ParticleOptions particle; - public static ParticleEvent get(ParticleEffect particle) { + public static ParticleEvent get(ParticleOptions particle) { INSTANCE.setCancelled(false); INSTANCE.particle = particle; return INSTANCE; diff --git a/src/main/java/meteordevelopment/meteorclient/events/world/PlaySoundEvent.java b/src/main/java/meteordevelopment/meteorclient/events/world/PlaySoundEvent.java index 30892b608f..e24b42aedb 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/world/PlaySoundEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/world/PlaySoundEvent.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.events.world; import meteordevelopment.meteorclient.events.Cancellable; -import net.minecraft.client.sound.SoundInstance; +import net.minecraft.client.resources.sounds.SoundInstance; public class PlaySoundEvent extends Cancellable { private static final PlaySoundEvent INSTANCE = new PlaySoundEvent(); diff --git a/src/main/java/meteordevelopment/meteorclient/events/world/ServerConnectBeginEvent.java b/src/main/java/meteordevelopment/meteorclient/events/world/ServerConnectBeginEvent.java index cc7a2333e1..fe8bf2801d 100644 --- a/src/main/java/meteordevelopment/meteorclient/events/world/ServerConnectBeginEvent.java +++ b/src/main/java/meteordevelopment/meteorclient/events/world/ServerConnectBeginEvent.java @@ -5,15 +5,15 @@ package meteordevelopment.meteorclient.events.world; -import net.minecraft.client.network.ServerAddress; -import net.minecraft.client.network.ServerInfo; +import net.minecraft.client.multiplayer.resolver.ServerAddress; +import net.minecraft.client.multiplayer.ServerData; public class ServerConnectBeginEvent { private static final ServerConnectBeginEvent INSTANCE = new ServerConnectBeginEvent(); public ServerAddress address; - public ServerInfo info; + public ServerData info; - public static ServerConnectBeginEvent get(ServerAddress address, ServerInfo info) { + public static ServerConnectBeginEvent get(ServerAddress address, ServerData info) { INSTANCE.address = address; INSTANCE.info = info; return INSTANCE; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java index 0e10738e11..68b4c22d11 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/DefaultSettingsWidgetFactory.java @@ -25,7 +25,7 @@ import meteordevelopment.meteorclient.systems.hud.elements.keyboard.KeyboardHud; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.client.resource.language.I18n; +import net.minecraft.client.resources.language.I18n; import org.apache.commons.lang3.Strings; import java.util.ArrayList; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java b/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java index 2b52425f84..8c03982ef1 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/GuiTheme.java @@ -28,10 +28,10 @@ import meteordevelopment.meteorclient.utils.misc.Keybind; import meteordevelopment.meteorclient.utils.misc.Names; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.util.math.BlockPos; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.world.item.ItemStack; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.BlockPos; import java.util.HashMap; import java.util.Map; @@ -59,45 +59,57 @@ public void beforeRender() { // Widgets public abstract WWindow window(WWidget icon, String title); + public WWindow window(String title) { return window(null, title); } public abstract WLabel label(String text, boolean title, double maxWidth); + public WLabel label(String text, boolean title) { return label(text, title, 0); } + public WLabel label(String text, double maxWidth) { return label(text, false, maxWidth); } + public WLabel label(String text) { return label(text, false); } public abstract WHorizontalSeparator horizontalSeparator(String text); + public WHorizontalSeparator horizontalSeparator() { return horizontalSeparator(null); } + public abstract WVerticalSeparator verticalSeparator(); protected abstract WButton button(String text, GuiTexture texture); + public WButton button(String text) { return button(text, null); } + public WButton button(GuiTexture texture) { return button(null, texture); } protected abstract WConfirmedButton confirmedButton(String text, String confirmText, GuiTexture texture); + public WConfirmedButton confirmedButton(String text, String confirmText) { return confirmedButton(text, confirmText, null); } + public WConfirmedButton confirmedButton(GuiTexture texture) { return confirmedButton(null, null, texture); } public abstract WMinus minus(); + public abstract WConfirmedMinus confirmedMinus(); + public abstract WPlus plus(); public abstract WCheckbox checkbox(boolean checked); @@ -105,23 +117,29 @@ public WConfirmedButton confirmedButton(GuiTexture texture) { public abstract WSlider slider(double value, double min, double max); public abstract WTextBox textBox(String text, String placeholder, CharFilter filter, Class renderer); + public WTextBox textBox(String text, CharFilter filter, Class renderer) { return textBox(text, null, filter, renderer); } + public WTextBox textBox(String text, String placeholder, CharFilter filter) { return textBox(text, placeholder, filter, null); } + public WTextBox textBox(String text, CharFilter filter) { return textBox(text, filter, null); } + public WTextBox textBox(String text, String placeholder) { return textBox(text, placeholder, (text1, c) -> true, null); } + public WTextBox textBox(String text) { return textBox(text, (text1, c) -> true, null); } public abstract WDropdown dropdown(T[] values, T value); + @SuppressWarnings("unchecked") public > WDropdown dropdown(T value) { Class klass = value.getDeclaringClass(); @@ -138,17 +156,21 @@ public > WDropdown dropdown(T value) { public WVerticalList verticalList() { return w(new WVerticalList()); } + public WHorizontalList horizontalList() { return w(new WHorizontalList()); } + public WTable table() { return w(new WTable()); } public abstract WSection section(String title, boolean expanded, WWidget headerWidget); + public WSection section(String title, boolean expanded) { return section(title, expanded, null); } + public WSection section(String title) { return section(title, true); } @@ -158,6 +180,7 @@ public WSection section(String title) { public WWidget module(Module module) { return module(module, module.title); } + public abstract WWidget module(Module module, String title); public abstract WQuad quad(Color color); @@ -169,9 +192,11 @@ public WWidget module(Module module) { public WItem item(ItemStack itemStack) { return w(new WItem(itemStack)); } + public WItemWithLabel itemWithLabel(ItemStack stack, String name) { return w(new WItemWithLabel(stack, name)); } + public WItemWithLabel itemWithLabel(ItemStack stack) { return itemWithLabel(stack, Names.get(stack.getItem())); } @@ -183,9 +208,11 @@ public WTexture texture(double width, double height, double rotation, Texture te public WIntEdit intEdit(int value, int min, int max, int sliderMin, int sliderMax, boolean noSlider) { return w(new WIntEdit(value, min, max, sliderMin, sliderMax, noSlider)); } + public WIntEdit intEdit(int value, int min, int max, int sliderMin, int sliderMax) { return w(new WIntEdit(value, min, max, sliderMin, sliderMax, false)); } + public WIntEdit intEdit(int value, int min, int max, boolean noSlider) { return w(new WIntEdit(value, min, max, 0, 0, noSlider)); } @@ -193,9 +220,11 @@ public WIntEdit intEdit(int value, int min, int max, boolean noSlider) { public WDoubleEdit doubleEdit(double value, double min, double max, double sliderMin, double sliderMax, int decimalPlaces, boolean noSlider) { return w(new WDoubleEdit(value, min, max, sliderMin, sliderMax, decimalPlaces, noSlider)); } + public WDoubleEdit doubleEdit(double value, double min, double max, double sliderMin, double sliderMax) { return w(new WDoubleEdit(value, min, max, sliderMin, sliderMax, 3, false)); } + public WDoubleEdit doubleEdit(double value, double min, double max) { return w(new WDoubleEdit(value, min, max, 0, 10, 3, false)); } @@ -215,6 +244,7 @@ public WKeybind keybind(Keybind keybind, Keybind defaultValue) { public WWidget settings(Settings settings, String filter) { return settingsFactory.create(this, settings, filter); } + public WWidget settings(Settings settings) { return settings(settings, ""); } @@ -224,6 +254,7 @@ public WWidget settings(Settings settings) { public TabScreen modulesScreen() { return new ModulesScreen(this); } + public boolean isModulesScreen(Screen screen) { return screen instanceof ModulesScreen; } @@ -285,6 +316,7 @@ public WidgetScreen proxiesScreen() { public double textWidth(String text, int length, boolean title) { return scale(textRenderer().getWidth(text, length, false) * (title ? TITLE_TEXT_SCALE : 1)); } + public double textWidth(String text) { return textWidth(text, text.length(), false); } @@ -292,6 +324,7 @@ public double textWidth(String text) { public double textHeight(boolean title) { return scale(textRenderer().getHeight() * (title ? TITLE_TEXT_SCALE : 1)); } + public double textHeight() { return textHeight(false); } @@ -321,13 +354,13 @@ protected T w(T widget) { // Saving / Loading @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putString("name", name); tag.put("settings", settings.toTag()); - NbtCompound configs = new NbtCompound(); + CompoundTag configs = new NbtCompound(); for (String id : windowConfigs.keySet()) { configs.put(id, windowConfigs.get(id).toTag()); } @@ -337,7 +370,7 @@ public NbtCompound toTag() { } @Override - public GuiTheme fromTag(NbtCompound tag) { + public GuiTheme fromTag(CompoundTag tag) { tag.getCompound("settings").ifPresent(settings::fromTag); tag.getCompound("windowConfigs").ifPresent(configs -> { diff --git a/src/main/java/meteordevelopment/meteorclient/gui/GuiThemes.java b/src/main/java/meteordevelopment/meteorclient/gui/GuiThemes.java index e831fdc435..77981d6ff0 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/GuiThemes.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/GuiThemes.java @@ -9,7 +9,7 @@ import meteordevelopment.meteorclient.gui.themes.meteor.MeteorGuiTheme; import meteordevelopment.meteorclient.utils.PostInit; import meteordevelopment.meteorclient.utils.PreInit; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtIo; import java.io.File; @@ -38,7 +38,7 @@ public static void init() { public static void postInit() { if (FILE.exists()) { try { - NbtCompound tag = NbtIo.read(FILE.toPath()); + CompoundTag tag = NbtIo.read(FILE.toPath()); if (tag != null) select(tag.getString("currentTheme", "")); } catch (IOException e) { @@ -50,7 +50,7 @@ public static void postInit() { } public static void add(GuiTheme theme) { - for (ListIterator it = themes.listIterator(); it.hasNext();) { + for (ListIterator it = themes.listIterator(); it.hasNext(); ) { if (it.next().name.equals(theme.name)) { // Replace the old one with same name it.set(theme); @@ -86,7 +86,7 @@ public static void select(String name) { File file = new File(THEMES_FOLDER, get().name + ".nbt"); if (file.exists()) { - NbtCompound tag = NbtIo.read(file.toPath()); + CompoundTag tag = NbtIo.read(file.toPath()); if (tag != null) get().fromTag(tag); } } catch (IOException e) { @@ -117,7 +117,7 @@ public static String[] getNames() { private static void saveTheme() { if (get() != null) { try { - NbtCompound tag = get().toTag(); + CompoundTag tag = get().toTag(); THEMES_FOLDER.mkdirs(); NbtIo.write(tag, new File(THEMES_FOLDER, get().name + ".nbt").toPath()); @@ -129,7 +129,7 @@ private static void saveTheme() { private static void saveGlobal() { try { - NbtCompound tag = new NbtCompound(); + CompoundTag tag = new NbtCompound(); tag.putString("currentTheme", get().name); FOLDER.mkdirs(); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java index bdc8983324..68d5fe49d7 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java @@ -17,14 +17,14 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.CursorStyle; import meteordevelopment.meteorclient.utils.misc.input.Input; -import net.minecraft.client.gui.Click; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.input.CharInput; -import net.minecraft.client.input.KeyInput; -import net.minecraft.client.util.MacWindowUtil; -import net.minecraft.text.Text; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.CharacterEvent; +import net.minecraft.client.input.KeyEvent; +import com.mojang.blaze3d.platform.MacosUtil; +import net.minecraft.network.chat.Component; +import net.minecraft.util.Mth; import java.util.ArrayList; import java.util.List; @@ -65,7 +65,7 @@ public abstract class WidgetScreen extends Screen { protected boolean firstInit = true; public WidgetScreen(GuiTheme theme, String title) { - super(Text.literal(title)); + super(Component.literal(title)); this.parent = mc.currentScreen; this.root = new WFullScreenRoot(); @@ -119,7 +119,7 @@ public void onClosed(Runnable action) { } @Override - public boolean mouseClicked(Click click, boolean doubled) { + public boolean mouseClicked(MouseButtonEvent click, boolean doubled) { if (locked) return false; double mouseX = click.x(); @@ -133,7 +133,7 @@ public boolean mouseClicked(Click click, boolean doubled) { } @Override - public boolean mouseReleased(Click click) { + public boolean mouseReleased(MouseButtonEvent click) { if (locked) return false; double mouseX = click.x(); @@ -143,7 +143,8 @@ public boolean mouseReleased(Click click) { mouseX *= s; mouseY *= s; - if (debug && click.button() == GLFW_MOUSE_BUTTON_RIGHT) DEBUG_RENDERER.mouseReleased(root, new Click(mouseX, mouseY, click.buttonInfo()), 0); + if (debug && click.button() == GLFW_MOUSE_BUTTON_RIGHT) + DEBUG_RENDERER.mouseReleased(root, new Click(mouseX, mouseY, click.buttonInfo()), 0); return root.mouseReleased(new Click(mouseX, mouseY, click.buttonInfo())); } @@ -172,7 +173,7 @@ public boolean mouseScrolled(double mouseX, double mouseY, double horizontalAmou } @Override - public boolean keyReleased(KeyInput input) { + public boolean keyReleased(KeyEvent input) { if (locked) return false; if ((input.modifiers() == GLFW_MOD_CONTROL || input.modifiers() == GLFW_MOD_SUPER) && input.key() == GLFW_KEY_9) { @@ -189,7 +190,7 @@ public boolean keyReleased(KeyInput input) { } @Override - public boolean keyPressed(KeyInput input) { + public boolean keyPressed(KeyEvent input) { if (locked) return false; boolean shouldReturn = root.keyPressed(input) || super.keyPressed(input); @@ -227,39 +228,39 @@ public boolean keyPressed(KeyInput input) { return true; } - boolean control = MacWindowUtil.IS_MAC ? input.modifiers() == GLFW_MOD_SUPER : input.modifiers() == GLFW_MOD_CONTROL; + boolean control = MacosUtil.IS_MAC ? input.modifiers() == GLFW_MOD_SUPER : input.modifiers() == GLFW_MOD_CONTROL; return (control && input.key() == GLFW_KEY_C && toClipboard()) || (control && input.key() == GLFW_KEY_V && fromClipboard()); } - public void keyRepeated(KeyInput input) { + public void keyRepeated(KeyEvent input) { if (locked) return; root.keyRepeated(input); } @Override - public boolean charTyped(CharInput input) { + public boolean charTyped(CharacterEvent input) { if (locked) return false; return root.charTyped(input); } @Override - public void renderBackground(DrawContext context, int mouseX, int mouseY, float deltaTicks) { + public void renderBackground(GuiGraphics context, int mouseX, int mouseY, float deltaTicks) { if (this.client.world == null) { this.renderPanoramaBackground(context, deltaTicks); } } - public void renderCustom(DrawContext context, int mouseX, int mouseY, float delta) { + public void renderCustom(GuiGraphics context, int mouseX, int mouseY, float delta) { int s = mc.getWindow().getScaleFactor(); mouseX *= s; mouseY *= s; animProgress += (delta / 20 * 14) * (closing ? -1 : 1); - animProgress = MathHelper.clamp(animProgress, 0, 1); + animProgress = Mth.clamp(animProgress, 0, 1); if (closing && (animProgress == 0 || parent != null)) { closeInternal(); @@ -300,7 +301,8 @@ protected void runAfterRenderTasks() { } } - protected void onRenderBefore(DrawContext drawContext, float delta) {} + protected void onRenderBefore(GuiGraphics drawContext, float delta) { + } @Override public void resize(int width, int height) { @@ -361,7 +363,8 @@ private void loopWidgets(WWidget widget, Consumer action) { } } - protected void onClosed() {} + protected void onClosed() { + } public boolean toClipboard() { return false; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiDebugRenderer.java b/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiDebugRenderer.java index 08a17e69d7..0eb9f9ef4a 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiDebugRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiDebugRenderer.java @@ -13,8 +13,8 @@ import meteordevelopment.meteorclient.renderer.MeshRenderer; import meteordevelopment.meteorclient.renderer.MeteorRenderPipelines; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.Click; +import net.minecraft.client.Minecraft; +import net.minecraft.client.input.MouseButtonEvent; public class GuiDebugRenderer { private static final Color CELL_COLOR = new Color(25, 225, 25); @@ -30,13 +30,13 @@ public void render(WWidget widget) { mesh.end(); MeshRenderer.begin() - .attachments(MinecraftClient.getInstance().getFramebuffer()) + .attachments(Minecraft.getInstance().getFramebuffer()) .pipeline(MeteorRenderPipelines.WORLD_COLORED_LINES) .mesh(mesh) .end(); } - public void mouseReleased(WWidget widget, Click click, int i) { + public void mouseReleased(WWidget widget, MouseButtonEvent click, int i) { if (widget == null) return; MeteorClient.LOG.info("{} {}", widget.getClass(), i); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiRenderer.java b/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiRenderer.java index 639b221ae9..a43ef8baa8 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/renderer/GuiRenderer.java @@ -19,10 +19,10 @@ import meteordevelopment.meteorclient.utils.misc.Pool; import meteordevelopment.meteorclient.utils.render.RenderUtils; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.world.item.ItemStack; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; import java.util.List; @@ -60,7 +60,7 @@ public class GuiRenderer { public WWidget tooltipWidget; private double tooltipAnimProgress; - private DrawContext drawContext; + private GuiGraphics drawContext; public static GuiTexture addTexture(Identifier id) { return TEXTURE_PACKER.add(id); @@ -81,7 +81,7 @@ public static void init() { TEXTURE = TEXTURE_PACKER.pack(); } - public void begin(DrawContext drawContext) { + public void begin(GuiGraphics drawContext) { this.drawContext = drawContext; this.drawContext.createNewRootLayer(); @@ -173,9 +173,9 @@ public void scissorEnd() { scissorPool.free(scissor); } - public boolean renderTooltip(DrawContext drawContext, double mouseX, double mouseY, double delta) { + public boolean renderTooltip(GuiGraphics drawContext, double mouseX, double mouseY, double delta) { tooltipAnimProgress += (tooltip != null ? 1 : -1) * delta * 14; - tooltipAnimProgress = MathHelper.clamp(tooltipAnimProgress, 0, 1); + tooltipAnimProgress = Mth.clamp(tooltipAnimProgress, 0, 1); boolean toReturn = false; @@ -188,8 +188,10 @@ public boolean renderTooltip(DrawContext drawContext, double mouseX, double mous double deltaX = -tooltipWidget.x + mouseX + 12; double deltaY = -tooltipWidget.y + mouseY + 12; - if (mouseX + 12 + tooltipWidget.width > getWindowWidth()) deltaX = -tooltipWidget.x + getWindowWidth() - tooltipWidget.width; - if (mouseY + 12 + tooltipWidget.height > getWindowHeight()) deltaY = -tooltipWidget.y + getWindowHeight() - tooltipWidget.height; + if (mouseX + 12 + tooltipWidget.width > getWindowWidth()) + deltaX = -tooltipWidget.x + getWindowWidth() - tooltipWidget.width; + if (mouseY + 12 + tooltipWidget.height > getWindowHeight()) + deltaY = -tooltipWidget.y + getWindowHeight() - tooltipWidget.height; tooltipWidget.move(deltaX, deltaY); @@ -223,15 +225,19 @@ public void tooltip(String text) { public void quad(double x, double y, double width, double height, Color cTopLeft, Color cTopRight, Color cBottomRight, Color cBottomLeft) { r.quad(x, y, width, height, cTopLeft, cTopRight, cBottomRight, cBottomLeft); } + public void quad(double x, double y, double width, double height, Color colorLeft, Color colorRight) { quad(x, y, width, height, colorLeft, colorRight, colorRight, colorLeft); } + public void quad(double x, double y, double width, double height, Color color) { quad(x, y, width, height, color, color); } + public void quad(WWidget widget, Color color) { quad(widget.x, widget.y, widget.width, widget.height, color); } + public void quad(double x, double y, double width, double height, GuiTexture texture, Color color) { rTex.texQuad(x, y, width, height, texture.get(width, height), color); } @@ -241,7 +247,7 @@ public void rotatedQuad(double x, double y, double width, double height, double } public void triangle(double x1, double y1, double x2, double y2, double x3, double y3, Color color) { - r.triangle(x1, y1, x2, y2, x3, y3 ,color); + r.triangle(x1, y1, x2, y2, x3, y3, color); } public void text(String text, double x, double y, Color color, boolean title) { diff --git a/src/main/java/meteordevelopment/meteorclient/gui/renderer/packer/TexturePacker.java b/src/main/java/meteordevelopment/meteorclient/gui/renderer/packer/TexturePacker.java index 62e49699bc..1fb3abf750 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/renderer/packer/TexturePacker.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/renderer/packer/TexturePacker.java @@ -9,7 +9,7 @@ import com.mojang.blaze3d.textures.FilterMode; import com.mojang.blaze3d.textures.TextureFormat; import meteordevelopment.meteorclient.renderer.Texture; -import net.minecraft.util.Identifier; +import net.minecraft.resources.Identifier; import org.lwjgl.BufferUtils; import org.lwjgl.stb.STBImage; import org.lwjgl.stb.STBImageResize; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/ContainerInventoryScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/ContainerInventoryScreen.java index 56d65b9229..fa7ab2b094 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/ContainerInventoryScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/ContainerInventoryScreen.java @@ -8,18 +8,18 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.BetterTooltips; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.client.gl.RenderPipelines; -import net.minecraft.client.gui.Click; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.input.KeyInput; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.BundleContentsComponent; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.item.BundleItem; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.component.BundleContents; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.item.BundleItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.resources.Identifier; +import net.minecraft.util.Mth; import org.lwjgl.glfw.GLFW; import java.util.ArrayList; @@ -37,7 +37,7 @@ public class ContainerInventoryScreen extends Screen { private static final int SCREEN_WIDTH = 176; private final List containerItems; - private final PlayerInventory playerInventory; + private final Inventory playerInventory; private final int containerRows; private int x, y; @@ -50,7 +50,7 @@ public ContainerInventoryScreen(ItemStack containerItem) { this.containerItems = new ArrayList<>(); if (containerItem.getItem() instanceof BundleItem) { - BundleContentsComponent bundleContents = containerItem.get(DataComponentTypes.BUNDLE_CONTENTS); + BundleContents bundleContents = containerItem.get(DataComponents.BUNDLE_CONTENTS); if (bundleContents != null) { bundleContents.iterate().forEach(containerItems::add); } @@ -60,7 +60,7 @@ public ContainerInventoryScreen(ItemStack containerItem) { Collections.addAll(containerItems, tempItems); } - this.containerRows = Math.max(1, MathHelper.ceilDiv(containerItems.size(), 9)); + this.containerRows = Math.max(1, Mth.ceilDiv(containerItems.size(), 9)); } @Override @@ -71,7 +71,7 @@ protected void init() { } @Override - public void render(DrawContext context, int mouseX, int mouseY, float delta) { + public void render(GuiGraphics context, int mouseX, int mouseY, float delta) { super.render(context, mouseX, mouseY, delta); baseX = x + 8; @@ -128,7 +128,7 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta) { } @Override - public boolean mouseClicked(Click click, boolean doubled) { + public boolean mouseClicked(MouseButtonEvent click, boolean doubled) { BetterTooltips tooltips = Modules.get().get(BetterTooltips.class); ItemStack stack = getSelectedItem((int) click.x(), (int) click.y()); @@ -140,7 +140,7 @@ public boolean mouseClicked(Click click, boolean doubled) { } @Override - public boolean keyPressed(KeyInput input) { + public boolean keyPressed(KeyEvent input) { BetterTooltips tooltips = Modules.get().get(BetterTooltips.class); ItemStack stack = getSelectedItem((int) mc.mouse.getScaledX(mc.getWindow()), (int) mc.mouse.getScaledY(mc.getWindow())); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/EditBookTitleAndAuthorScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/EditBookTitleAndAuthorScreen.java index 42e2550ae0..bd6d81194c 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/EditBookTitleAndAuthorScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/EditBookTitleAndAuthorScreen.java @@ -9,13 +9,13 @@ import meteordevelopment.meteorclient.gui.WindowScreen; import meteordevelopment.meteorclient.gui.widgets.containers.WTable; import meteordevelopment.meteorclient.gui.widgets.input.WTextBox; -import net.minecraft.client.gui.screen.ingame.BookScreen; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.WrittenBookContentComponent; -import net.minecraft.item.ItemStack; -import net.minecraft.network.packet.c2s.play.BookUpdateC2SPacket; -import net.minecraft.text.RawFilteredPair; -import net.minecraft.util.Hand; +import net.minecraft.client.gui.screens.inventory.BookViewScreen; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.component.WrittenBookContent; +import net.minecraft.world.item.ItemStack; +import net.minecraft.network.protocol.game.ServerboundEditBookPacket; +import net.minecraft.server.network.Filterable; +import net.minecraft.world.InteractionHand; import java.util.ArrayList; import java.util.List; @@ -25,9 +25,9 @@ public class EditBookTitleAndAuthorScreen extends WindowScreen { private final ItemStack itemStack; - private final Hand hand; + private final InteractionHand hand; - public EditBookTitleAndAuthorScreen(GuiTheme theme, ItemStack itemStack, Hand hand) { + public EditBookTitleAndAuthorScreen(GuiTheme theme, ItemStack itemStack, InteractionHand hand) { super(theme, "Edit title & author"); this.itemStack = itemStack; this.hand = hand; @@ -38,23 +38,23 @@ public void initWidgets() { WTable t = add(theme.table()).expandX().widget(); t.add(theme.label("Title")); - WTextBox title = t.add(theme.textBox(itemStack.get(DataComponentTypes.WRITTEN_BOOK_CONTENT).title().get(mc.shouldFilterText()))).minWidth(220).expandX().widget(); + WTextBox title = t.add(theme.textBox(itemStack.get(DataComponents.WRITTEN_BOOK_CONTENT).title().get(mc.shouldFilterText()))).minWidth(220).expandX().widget(); t.row(); t.add(theme.label("Author")); - WTextBox author = t.add(theme.textBox(itemStack.get(DataComponentTypes.WRITTEN_BOOK_CONTENT).author())).minWidth(220).expandX().widget(); + WTextBox author = t.add(theme.textBox(itemStack.get(DataComponents.WRITTEN_BOOK_CONTENT).author())).minWidth(220).expandX().widget(); t.row(); t.add(theme.button("Done")).expandX().widget().action = () -> { - WrittenBookContentComponent component = itemStack.get(DataComponentTypes.WRITTEN_BOOK_CONTENT); - WrittenBookContentComponent newComponent = new WrittenBookContentComponent(RawFilteredPair.of(title.get()), author.get(), component.generation(), component.pages(), component.resolved()); - itemStack.set(DataComponentTypes.WRITTEN_BOOK_CONTENT, newComponent); + WrittenBookContent component = itemStack.get(DataComponents.WRITTEN_BOOK_CONTENT); + WrittenBookContent newComponent = new WrittenBookContentComponent(Filterable.of(title.get()), author.get(), component.generation(), component.pages(), component.resolved()); + itemStack.set(DataComponents.WRITTEN_BOOK_CONTENT, newComponent); - BookScreen.Contents contents = new BookScreen.Contents(itemStack.get(DataComponentTypes.WRITTEN_BOOK_CONTENT).getPages(mc.shouldFilterText())); + BookViewScreen.BookAccess contents = new BookViewScreen.Contents(itemStack.get(DataComponents.WRITTEN_BOOK_CONTENT).getPages(mc.shouldFilterText())); List pages = new ArrayList<>(contents.getPageCount()); for (int i = 0; i < contents.getPageCount(); i++) pages.add(contents.getPage(i).getString()); - mc.getNetworkHandler().sendPacket(new BookUpdateC2SPacket(hand == Hand.MAIN_HAND ? mc.player.getInventory().getSelectedSlot() : 40, pages, Optional.of(title.get()))); + mc.getNetworkHandler().sendPacket(new BookUpdateC2SPacket(hand == InteractionHand.MAIN_HAND ? mc.player.getInventory().getSelectedSlot() : 40, pages, Optional.of(title.get()))); close(); }; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java index a9918bddfe..dc592d049c 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModuleScreen.java @@ -26,7 +26,7 @@ import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.render.prompts.OkPrompt; import meteordevelopment.orbit.EventHandler; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import java.util.Optional; @@ -157,11 +157,11 @@ private void onActiveModulesChanged(ActiveModulesChangedEvent event) { @Override public boolean toClipboard() { - NbtCompound tag = new NbtCompound(); + CompoundTag tag = new NbtCompound(); tag.putString("name", module.name); - NbtCompound settingsTag = module.settings.toTag(); + CompoundTag settingsTag = module.settings.toTag(); if (!settingsTag.isEmpty()) tag.put("settings", settingsTag); return NbtUtils.toClipboard(tag); @@ -169,11 +169,11 @@ public boolean toClipboard() { @Override public boolean fromClipboard() { - NbtCompound tag = NbtUtils.fromClipboard(); + CompoundTag tag = NbtUtils.fromClipboard(); if (tag == null) return false; if (!tag.getString("name", "").equals(module.name)) return false; - Optional settings = tag.getCompound("settings"); + Optional settings = tag.getCompound("settings"); if (settings.isPresent()) module.settings.fromTag(settings.get()); else module.settings.reset(); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java index 05e2e55f5b..c5b224f7c9 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/ModulesScreen.java @@ -19,10 +19,10 @@ import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.utils.misc.NbtUtils; -import net.minecraft.client.input.KeyInput; -import net.minecraft.client.util.MacWindowUtil; -import net.minecraft.item.Items; -import net.minecraft.util.Pair; +import net.minecraft.client.input.KeyEvent; +import com.mojang.blaze3d.platform.MacosUtil; +import net.minecraft.world.item.Items; +import net.minecraft.util.Tuple; import java.util.ArrayList; import java.util.List; @@ -86,14 +86,14 @@ protected WWindow createCategory(WContainer c, Category category, List m protected void createSearchW(WContainer w, String text) { if (!text.isEmpty()) { // Titles - List> modules = Modules.get().searchTitles(text); + List> modules = Modules.get().searchTitles(text); if (!modules.isEmpty()) { WSection section = w.add(theme.section("Modules")).expandX().widget(); section.spacing = 0; int count = 0; - for (Pair p : modules) { + for (Tuple p : modules) { if (count >= Config.get().moduleSearchCount.get() || count >= modules.size()) break; section.add(theme.module(p.getLeft(), p.getRight())).expandX(); count++; @@ -148,10 +148,10 @@ protected WWindow createSearch(WContainer c) { } @Override - public boolean keyPressed(KeyInput value) { + public boolean keyPressed(KeyEvent value) { if (locked) return false; - boolean cntrl = MacWindowUtil.IS_MAC ? value.modifiers() == GLFW_MOD_SUPER : value.modifiers() == GLFW_MOD_CONTROL; + boolean cntrl = MacosUtil.IS_MAC ? value.modifiers() == GLFW_MOD_SUPER : value.modifiers() == GLFW_MOD_CONTROL; if (cntrl && value.key() == GLFW_KEY_F) { if (searchWindow != null) searchWindow.setExpanded(true); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockDataSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockDataSettingScreen.java index edae8bff8f..c000ad108c 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockDataSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockDataSettingScreen.java @@ -16,10 +16,10 @@ import meteordevelopment.meteorclient.utils.misc.ICopyable; import meteordevelopment.meteorclient.utils.misc.ISerializable; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.registry.Registries; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.core.registries.BuiltInRegistries; import org.jetbrains.annotations.Nullable; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -29,7 +29,7 @@ public class BlockDataSettingScreen & ISerializable & private boolean invalidate; public BlockDataSettingScreen(GuiTheme theme, BlockDataSetting setting) { - super(theme, "Configure Blocks", setting, setting.get(), Registries.BLOCK); + super(theme, "Configure Blocks", setting, setting.get(), BuiltInRegistries.BLOCK); this.setting = setting; } @@ -58,7 +58,7 @@ protected WWidget getDataWidget(Block block, @Nullable T blockData) { } @Override - protected void onRenderBefore(DrawContext drawContext, float delta) { + protected void onRenderBefore(GuiGraphics drawContext, float delta) { if (invalidate) { this.invalidateTable(); invalidate = false; @@ -69,7 +69,7 @@ protected void onRenderBefore(DrawContext drawContext, float delta) { protected String[] getValueNames(Block block) { return new String[]{ Names.get(block), - Registries.BLOCK.getId(block).toString() + BuiltInRegistries.BLOCK.getId(block).toString() }; } } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockListSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockListSettingScreen.java index d0309ce85b..1523826915 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockListSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockListSettingScreen.java @@ -10,21 +10,21 @@ import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.settings.BlockListSetting; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import java.util.function.Predicate; public class BlockListSettingScreen extends CollectionListSettingScreen { public BlockListSettingScreen(GuiTheme theme, BlockListSetting setting) { - super(theme, "Select Blocks", setting, setting.get(), Registries.BLOCK); + super(theme, "Select Blocks", setting, setting.get(), BuiltInRegistries.BLOCK); } @Override protected boolean includeValue(Block value) { - if (Registries.BLOCK.getId(value).getPath().endsWith("_wall_banner")) { + if (BuiltInRegistries.BLOCK.getId(value).getPath().endsWith("_wall_banner")) { return false; } @@ -43,15 +43,15 @@ protected WWidget getValueWidget(Block value) { protected String[] getValueNames(Block value) { return new String[]{ Names.get(value), - Registries.BLOCK.getId(value).toString() + BuiltInRegistries.BLOCK.getId(value).toString() }; } @Override protected Block getAdditionalValue(Block value) { - String path = Registries.BLOCK.getId(value).getPath(); + String path = BuiltInRegistries.BLOCK.getId(value).getPath(); if (!path.endsWith("_banner")) return null; - return Registries.BLOCK.get(Identifier.ofVanilla(path.substring(0, path.length() - 6) + "wall_banner")); + return BuiltInRegistries.BLOCK.get(Identifier.ofVanilla(path.substring(0, path.length() - 6) + "wall_banner")); } } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockSettingScreen.java index ae4b4faa5b..63d9bf4628 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/BlockSettingScreen.java @@ -13,9 +13,9 @@ import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; import meteordevelopment.meteorclient.settings.BlockSetting; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.registry.Registries; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.core.registries.BuiltInRegistries; import org.apache.commons.lang3.Strings; public class BlockSettingScreen extends WindowScreen { @@ -49,7 +49,7 @@ public void initWidgets() { } private void initTable() { - for (Block block : Registries.BLOCK) { + for (Block block : BuiltInRegistries.BLOCK) { if (setting.filter != null && !setting.filter.test(block)) continue; if (skipValue(block)) continue; @@ -68,6 +68,6 @@ private void initTable() { } protected boolean skipValue(Block value) { - return value == Blocks.AIR || Registries.BLOCK.getId(value).getPath().endsWith("_wall_banner"); + return value == Blocks.AIR || BuiltInRegistries.BLOCK.getId(value).getPath().endsWith("_wall_banner"); } } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ColorSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ColorSettingScreen.java index 68c1b3a10f..7095bb1430 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ColorSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ColorSettingScreen.java @@ -20,13 +20,13 @@ import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.client.gui.Click; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.util.Mth; import static meteordevelopment.meteorclient.MeteorClient.mc; public class ColorSettingScreen extends WindowScreen { - private static final Color[] HUE_COLORS = { new Color(255, 0, 0), new Color(255, 255, 0), new Color(0, 255, 0), new Color(0, 255, 255), new Color(0, 0, 255), new Color(255, 0, 255), new Color(255, 0, 0) }; + private static final Color[] HUE_COLORS = {new Color(255, 0, 0), new Color(255, 255, 0), new Color(0, 255, 0), new Color(0, 255, 255), new Color(0, 0, 255), new Color(255, 0, 255), new Color(255, 0, 0)}; private static final Color WHITE = new Color(255, 255, 255); private static final Color BLACK = new Color(0, 0, 0); @@ -171,7 +171,7 @@ private void hsvChanged() { double b = 0; boolean calculated = false; - if(brightnessQuad.saturation <= 0.0) { + if (brightnessQuad.saturation <= 0.0) { r = brightnessQuad.value; g = brightnessQuad.value; b = brightnessQuad.value; @@ -278,7 +278,7 @@ void calculateFromColor(Color c, boolean calculateNow) { } @Override - public boolean onMouseClicked(Click click, boolean doubled) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { if (doubled) return false; if (mouseOver) { @@ -296,7 +296,7 @@ public boolean onMouseClicked(Click click, boolean doubled) { } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { if (dragging) { dragging = false; setFocused(false); @@ -396,8 +396,7 @@ private SettingColor parseRGBA(String string) { try { color = new SettingColor(Integer.parseInt(rgba[0]), Integer.parseInt(rgba[1]), Integer.parseInt(rgba[2])); if (rgba.length == 4) color.a = Integer.parseInt(rgba[3]); - } - catch (NumberFormatException e) { + } catch (NumberFormatException e) { return null; } @@ -413,8 +412,7 @@ private SettingColor parseHex(String string) { try { color = new SettingColor(Integer.parseInt(hex.substring(0, 2), 16), Integer.parseInt(hex.substring(2, 4), 16), Integer.parseInt(hex.substring(4, 6), 16)); if (hex.length() == 8) color.a = Integer.parseInt(hex.substring(6, 8), 16); - } - catch (NumberFormatException e) { + } catch (NumberFormatException e) { return null; } @@ -445,10 +443,10 @@ void calculateFromSetting(boolean calculateNow) { double min, max, delta; min = Math.min(c.r, c.g); - min = min < c.b ? min : c.b; + min = min < c.b ? min : c.b; max = Math.max(c.r, c.g); - max = max > c.b ? max : c.b; + max = max > c.b ? max : c.b; delta = max - min; if (delta < 0.00001) { @@ -500,7 +498,7 @@ void calculateColor() { int i; hh = hueAngle; - if(hh >= 360.0) hh = 0.0; + if (hh >= 360.0) hh = 0.0; hh /= 60.0; i = (int) hh; ff = hh - i; @@ -552,7 +550,7 @@ void calculateColor() { } @Override - public boolean onMouseClicked(Click click, boolean doubled) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { if (doubled) return false; if (mouseOver) { @@ -570,7 +568,7 @@ public boolean onMouseClicked(Click click, boolean doubled) { } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { if (dragging) { dragging = false; setFocused(false); @@ -584,7 +582,7 @@ public void onMouseMoved(double mouseX, double mouseY, double lastMouseX, double if (dragging) { if (mouseX >= this.x && mouseX <= this.x + width) { handleX += mouseX - lastMouseX; - handleX = MathHelper.clamp(handleX, 0, width); + handleX = Mth.clamp(handleX, 0, width); } else { if (handleX > 0 && mouseX < this.x) handleX = 0; else if (handleX < width && mouseX > this.x + width) handleX = width; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/EnchantmentListSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/EnchantmentListSettingScreen.java index f6dad94ea0..8a3306503a 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/EnchantmentListSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/EnchantmentListSettingScreen.java @@ -10,24 +10,24 @@ import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.resources.ResourceKey; +import net.minecraft.core.registries.Registries; import java.util.Set; public class EnchantmentListSettingScreen extends DynamicRegistryListSettingScreen { - public EnchantmentListSettingScreen(GuiTheme theme, Setting>> setting) { - super(theme, "Select Enchantments", setting, setting.get(), RegistryKeys.ENCHANTMENT); + public EnchantmentListSettingScreen(GuiTheme theme, Setting>> setting) { + super(theme, "Select Enchantments", setting, setting.get(), Registries.ENCHANTMENT); } @Override - protected WWidget getValueWidget(RegistryKey value) { + protected WWidget getValueWidget(ResourceKey value) { return theme.label(Names.get(value)); } @Override - protected String[] getValueNames(RegistryKey value) { + protected String[] getValueNames(ResourceKey value) { return new String[]{ Names.get(value), value.getValue().toString() diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/EntityTypeListSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/EntityTypeListSettingScreen.java index 4cd2223638..8e71ad45a8 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/EntityTypeListSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/EntityTypeListSettingScreen.java @@ -19,12 +19,12 @@ import meteordevelopment.meteorclient.settings.EntityTypeListSetting; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.entity.EntityType; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.Registries; -import net.minecraft.util.Pair; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.util.Tuple; import java.util.ArrayList; import java.util.Comparator; @@ -136,8 +136,8 @@ public void initWidgets() { Cell miscCell = add(misc).expandX(); miscT = misc.add(theme.table()).expandX().widget(); - var spawnEggItems = Registries.ITEM.stream() - .filter(item -> item.getComponents().contains(DataComponentTypes.ENTITY_DATA)) + var spawnEggItems = BuiltInRegistries.ITEM.stream() + .filter(item -> item.getComponents().contains(DataComponents.ENTITY_DATA)) .toList(); Consumer> entityTypeForEach = entityType -> { @@ -169,17 +169,17 @@ public void initWidgets() { // Sort all entities if (filterText.isEmpty()) { - Registries.ENTITY_TYPE.forEach(entityTypeForEach); + BuiltInRegistries.ENTITY_TYPE.forEach(entityTypeForEach); } else { - List, Integer>> entities = new ArrayList<>(); - Registries.ENTITY_TYPE.forEach(entity -> { + List, Integer>> entities = new ArrayList<>(); + BuiltInRegistries.ENTITY_TYPE.forEach(entity -> { int words = Utils.searchInWords(Names.get(entity), filterText); int diff = Utils.searchLevenshteinDefault(Names.get(entity), filterText, false); if (words > 0 || diff < Names.get(entity).length() / 2) entities.add(new Pair<>(entity, -diff)); }); entities.sort(Comparator.comparingInt(value -> -value.getRight())); - for (Pair, Integer> pair : entities) entityTypeForEach.accept(pair.getLeft()); + for (Tuple, Integer> pair : entities) entityTypeForEach.accept(pair.getLeft()); } if (animalsT.cells.isEmpty()) list.cells.remove(animalsCell); @@ -197,8 +197,7 @@ public void initWidgets() { if (!monstersT.cells.isEmpty()) monsters.setExpanded(true); if (!ambientT.cells.isEmpty()) ambient.setExpanded(true); if (!miscT.cells.isEmpty()) misc.setExpanded(true); - } - else { + } else { if (!animalsT.cells.isEmpty()) animals.setExpanded(false); if (!waterAnimalsT.cells.isEmpty()) waterAnimals.setExpanded(false); if (!monstersT.cells.isEmpty()) monsters.setExpanded(false); @@ -235,7 +234,7 @@ private void addEntityType(WTable table, WCheckbox tableCheckbox, EntityType ItemStack stack = null; for (var item : spawnEggItems) { - var component = item.getComponents().get(DataComponentTypes.ENTITY_DATA); + var component = item.getComponents().get(DataComponents.ENTITY_DATA); //noinspection DataFlowIssue if (component.getType() == entityType) { diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ItemListSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ItemListSettingScreen.java index 3e58d7d70f..e09a86d324 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ItemListSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ItemListSettingScreen.java @@ -10,15 +10,15 @@ import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.settings.ItemListSetting; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.registry.Registries; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.core.registries.BuiltInRegistries; import java.util.function.Predicate; public class ItemListSettingScreen extends CollectionListSettingScreen { public ItemListSettingScreen(GuiTheme theme, ItemListSetting setting) { - super(theme, "Select Items", setting, setting.get(), Registries.ITEM); + super(theme, "Select Items", setting, setting.get(), BuiltInRegistries.ITEM); } @Override @@ -38,7 +38,7 @@ protected WWidget getValueWidget(Item value) { protected String[] getValueNames(Item value) { return new String[]{ Names.get(value), - Registries.ITEM.getId(value).toString() + BuiltInRegistries.ITEM.getId(value).toString() }; } } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ItemSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ItemSettingScreen.java index c7c824677b..e3fcafbc73 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ItemSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ItemSettingScreen.java @@ -13,9 +13,9 @@ import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; import meteordevelopment.meteorclient.settings.ItemSetting; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.registry.Registries; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.core.registries.BuiltInRegistries; import org.apache.commons.lang3.Strings; public class ItemSettingScreen extends WindowScreen { @@ -48,7 +48,7 @@ public void initWidgets() { } public void initTable() { - for (Item item : Registries.ITEM) { + for (Item item : BuiltInRegistries.ITEM) { if (setting.filter != null && !setting.filter.test(item)) continue; if (item == Items.AIR) continue; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/PacketBoolSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/PacketBoolSettingScreen.java index ee765c1dc0..abbb97f341 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/PacketBoolSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/PacketBoolSettingScreen.java @@ -11,7 +11,7 @@ import meteordevelopment.meteorclient.settings.PacketListSetting; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.utils.network.PacketUtils; -import net.minecraft.network.packet.Packet; +import net.minecraft.network.protocol.Packet; import java.util.Set; import java.util.function.Predicate; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ParticleTypeListSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ParticleTypeListSettingScreen.java index ae2cc22806..91dee6d87a 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ParticleTypeListSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ParticleTypeListSettingScreen.java @@ -10,20 +10,20 @@ import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.particle.ParticleType; -import net.minecraft.registry.Registries; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.registries.BuiltInRegistries; import java.util.List; public class ParticleTypeListSettingScreen extends CollectionListSettingScreen> { public ParticleTypeListSettingScreen(GuiTheme theme, Setting>> setting) { - super(theme, "Select Particles", setting, setting.get(), Registries.PARTICLE_TYPE); + super(theme, "Select Particles", setting, setting.get(), BuiltInRegistries.PARTICLE_TYPE); } @Override protected boolean includeValue(ParticleType value) { - return value instanceof ParticleEffect; + return value instanceof ParticleOptions; } @Override @@ -35,7 +35,7 @@ protected WWidget getValueWidget(ParticleType value) { protected String[] getValueNames(ParticleType value) { return new String[]{ Names.get(value), - Registries.PARTICLE_TYPE.getId(value).toString() + BuiltInRegistries.PARTICLE_TYPE.getId(value).toString() }; } } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/PotionSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/PotionSettingScreen.java index 398c24f32e..8a7b5aeb35 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/PotionSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/PotionSettingScreen.java @@ -11,7 +11,7 @@ import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; import meteordevelopment.meteorclient.settings.PotionSetting; import meteordevelopment.meteorclient.utils.misc.MyPotion; -import net.minecraft.client.resource.language.I18n; +import net.minecraft.client.resources.language.I18n; public class PotionSettingScreen extends WindowScreen { private final PotionSetting setting; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ScreenHandlerSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ScreenHandlerSettingScreen.java index c779f4b37a..c6a43b7d87 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ScreenHandlerSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/ScreenHandlerSettingScreen.java @@ -9,29 +9,29 @@ import meteordevelopment.meteorclient.gui.screens.settings.base.CollectionListSettingScreen; import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.settings.Setting; -import net.minecraft.registry.Registries; -import net.minecraft.screen.ScreenHandlerType; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.inventory.MenuType; import java.util.List; -public class ScreenHandlerSettingScreen extends CollectionListSettingScreen> { - public ScreenHandlerSettingScreen(GuiTheme theme, Setting>> setting) { - super(theme, "Select Screen Handlers", setting, setting.get(), Registries.SCREEN_HANDLER); +public class ScreenHandlerSettingScreen extends CollectionListSettingScreen> { + public ScreenHandlerSettingScreen(GuiTheme theme, Setting>> setting) { + super(theme, "Select Screen Handlers", setting, setting.get(), BuiltInRegistries.SCREEN_HANDLER); } @Override - protected WWidget getValueWidget(ScreenHandlerType value) { + protected WWidget getValueWidget(MenuType value) { return theme.label(getName(value)); } @Override - protected String[] getValueNames(ScreenHandlerType type) { + protected String[] getValueNames(MenuType type) { return new String[]{ getName(type) }; } - private static String getName(ScreenHandlerType type) { - return Registries.SCREEN_HANDLER.getId(type).toString(); + private static String getName(MenuType type) { + return BuiltInRegistries.SCREEN_HANDLER.getId(type).toString(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/SoundEventListSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/SoundEventListSettingScreen.java index f94bdbfd15..e5976baf4b 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/SoundEventListSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/SoundEventListSettingScreen.java @@ -9,15 +9,15 @@ import meteordevelopment.meteorclient.gui.screens.settings.base.CollectionListSettingScreen; import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.settings.Setting; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.registry.Registries; -import net.minecraft.sound.SoundEvent; +import net.minecraft.client.resources.language.I18n; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.sounds.SoundEvent; import java.util.List; public class SoundEventListSettingScreen extends CollectionListSettingScreen { public SoundEventListSettingScreen(GuiTheme theme, Setting> setting) { - super(theme, "Select Sounds", setting, setting.get(), Registries.SOUND_EVENT); + super(theme, "Select Sounds", setting, setting.get(), BuiltInRegistries.SOUND_EVENT); } @Override diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StatusEffectAmplifierMapSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StatusEffectAmplifierMapSettingScreen.java index 7d69a9299a..527b994701 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StatusEffectAmplifierMapSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StatusEffectAmplifierMapSettingScreen.java @@ -13,11 +13,11 @@ import meteordevelopment.meteorclient.gui.widgets.input.WTextBox; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.PotionContentsComponent; -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import org.apache.commons.lang3.Strings; import java.util.ArrayList; @@ -26,13 +26,13 @@ import java.util.Optional; public class StatusEffectAmplifierMapSettingScreen extends WindowScreen { - private final Setting> setting; + private final Setting> setting; private WTable table; private String filterText = ""; - public StatusEffectAmplifierMapSettingScreen(GuiTheme theme, Setting> setting) { + public StatusEffectAmplifierMapSettingScreen(GuiTheme theme, Setting> setting) { super(theme, "Modify Amplifiers"); this.setting = setting; @@ -55,10 +55,10 @@ public void initWidgets() { } private void initTable() { - List statusEffects = new ArrayList<>(setting.get().keySet()); + List statusEffects = new ArrayList<>(setting.get().keySet()); statusEffects.sort(Comparator.comparing(Names::get)); - for (StatusEffect statusEffect : statusEffects) { + for (MobEffect statusEffect : statusEffects) { String name = Names.get(statusEffect); if (!Strings.CI.contains(name, filterText)) continue; @@ -75,15 +75,15 @@ private void initTable() { } } - private ItemStack getPotionStack(StatusEffect effect) { + private ItemStack getPotionStack(MobEffect effect) { ItemStack potion = Items.POTION.getDefaultStack(); potion.set( - DataComponentTypes.POTION_CONTENTS, + DataComponents.POTION_CONTENTS, new PotionContentsComponent( - potion.get(DataComponentTypes.POTION_CONTENTS).potion(), + potion.get(DataComponents.POTION_CONTENTS).potion(), Optional.of(effect.getColor()), - potion.get(DataComponentTypes.POTION_CONTENTS).customEffects(), + potion.get(DataComponents.POTION_CONTENTS).customEffects(), Optional.empty() ) ); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StatusEffectListSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StatusEffectListSettingScreen.java index 608c035a6b..ced6d49523 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StatusEffectListSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StatusEffectListSettingScreen.java @@ -10,43 +10,43 @@ import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.PotionContentsComponent; -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.registry.Registries; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.alchemy.PotionContents; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.core.registries.BuiltInRegistries; import java.util.List; import java.util.Optional; -public class StatusEffectListSettingScreen extends CollectionListSettingScreen { - public StatusEffectListSettingScreen(GuiTheme theme, Setting> setting) { - super(theme, "Select Effects", setting, setting.get(), Registries.STATUS_EFFECT); +public class StatusEffectListSettingScreen extends CollectionListSettingScreen { + public StatusEffectListSettingScreen(GuiTheme theme, Setting> setting) { + super(theme, "Select Effects", setting, setting.get(), BuiltInRegistries.STATUS_EFFECT); } @Override - protected WWidget getValueWidget(StatusEffect value) { + protected WWidget getValueWidget(MobEffect value) { return theme.itemWithLabel(getPotionStack(value), Names.get(value)); } @Override - protected String[] getValueNames(StatusEffect value) { + protected String[] getValueNames(MobEffect value) { return new String[]{ Names.get(value), - Registries.STATUS_EFFECT.getId(value).toString() + BuiltInRegistries.STATUS_EFFECT.getId(value).toString() }; } - private ItemStack getPotionStack(StatusEffect effect) { + private ItemStack getPotionStack(MobEffect effect) { ItemStack potion = Items.POTION.getDefaultStack(); potion.set( - DataComponentTypes.POTION_CONTENTS, + DataComponents.POTION_CONTENTS, new PotionContentsComponent( - potion.get(DataComponentTypes.POTION_CONTENTS).potion(), + potion.get(DataComponents.POTION_CONTENTS).potion(), Optional.of(effect.getColor()), - potion.get(DataComponentTypes.POTION_CONTENTS).customEffects(), + potion.get(DataComponents.POTION_CONTENTS).customEffects(), Optional.empty() ) ); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StorageBlockListSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StorageBlockListSettingScreen.java index f73d2cfb9e..02286785ab 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StorageBlockListSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/StorageBlockListSettingScreen.java @@ -11,10 +11,10 @@ import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.StorageBlockListSetting; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.registry.Registries; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.core.registries.BuiltInRegistries; import java.util.List; import java.util.Map; @@ -57,9 +57,10 @@ protected WWidget getValueWidget(BlockEntityType value) { protected String[] getValueNames(BlockEntityType value) { return new String[]{ BLOCK_ENTITY_TYPE_INFO_MAP.getOrDefault(value, UNKNOWN).name(), - Registries.BLOCK_ENTITY_TYPE.getId(value).toString() + BuiltInRegistries.BLOCK_ENTITY_TYPE.getId(value).toString() }; } - private record BlockEntityTypeInfo(Item item, String name) {} + private record BlockEntityTypeInfo(Item item, String name) { + } } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/base/DynamicRegistryListSettingScreen.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/base/DynamicRegistryListSettingScreen.java index f151dddea3..4ec0725e65 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/base/DynamicRegistryListSettingScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/base/DynamicRegistryListSettingScreen.java @@ -11,10 +11,10 @@ import meteordevelopment.meteorclient.gui.widgets.containers.WTable; import meteordevelopment.meteorclient.gui.widgets.input.WTextBox; import meteordevelopment.meteorclient.settings.Setting; -import net.minecraft.client.MinecraftClient; +import net.minecraft.client.Minecraft; import net.minecraft.registry.*; -import net.minecraft.util.Identifier; -import net.minecraft.util.InvalidIdentifierException; +import net.minecraft.resources.Identifier; +import net.minecraft.IdentifierException; import java.util.Collection; import java.util.Optional; @@ -32,7 +32,7 @@ public DynamicRegistryListSettingScreen(GuiTheme theme, String title, Setting private static Iterable> createUniverse(Collection> collection, RegistryKey> registryKey) { Set> set = new ReferenceOpenHashSet<>(collection); - Optional.ofNullable(MinecraftClient.getInstance().getNetworkHandler()) + Optional.ofNullable(Minecraft.getInstance().getNetworkHandler()) .map(networkHandler -> (RegistryWrapper.WrapperLookup) networkHandler.getRegistryManager()) .orElseGet(BuiltinRegistries::createWrapperLookup) .getOptional(registryKey) @@ -55,7 +55,8 @@ protected void postWidgets(WTable left, WTable right) { try { Identifier id = entry.contains(":") ? Identifier.of(entry) : Identifier.ofVanilla(entry); addValue(RegistryKey.of(registryKey, id)); - } catch (InvalidIdentifierException ignored) {} + } catch (IdentifierException ignored) { + } }; } } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/base/SortingHelper.java b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/base/SortingHelper.java index ed0b9be450..61c2362a02 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/base/SortingHelper.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/screens/settings/base/SortingHelper.java @@ -7,7 +7,7 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.util.collection.IndexedIterable; +import net.minecraft.core.IdMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -22,7 +22,8 @@ public final class SortingHelper { private static final Comparator> FILTER_COMPARATOR = Comparator.comparingInt(Entry::distance); - private SortingHelper() {} + private SortingHelper() { + } public static Iterable sort(Iterable registry, Predicate filter, Function nameFunction, String filterText) { return sortInternal(registry, filter, nameFunction, filterText, null); @@ -85,7 +86,7 @@ private static Iterable sortInternal(Iterable registry, Predicate f } private static List createList(Iterable iterable) { - if (iterable instanceof IndexedIterable indexed) { + if (iterable instanceof IdMap indexed) { return new ObjectArrayList<>(indexed.size()); } else if (iterable instanceof Collection collection) { return new ObjectArrayList<>(collection.size()); @@ -140,5 +141,6 @@ public void forEach(Consumer action) { }; } - public record Entry(T value, int distance) {} + public record Entry(T value, int distance) { + } } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/Tab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/Tab.java index f7774038a1..ba30716052 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/Tab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/Tab.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.gui.tabs; import meteordevelopment.meteorclient.gui.GuiTheme; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; import static meteordevelopment.meteorclient.MeteorClient.mc; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ConfigTab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ConfigTab.java index 55d84c1f8d..98f5df4700 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ConfigTab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ConfigTab.java @@ -13,7 +13,7 @@ import meteordevelopment.meteorclient.systems.config.Config; import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.render.prompts.YesNoPrompt; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; public class ConfigTab extends Tab { public ConfigTab() { @@ -51,8 +51,7 @@ public ConfigScreen(GuiTheme theme, Tab tab) { .onYes(() -> Config.get().prefix.set(".")) .id("empty-command-prefix") .show(); - } - else if (prefix.equals("/")) { + } else if (prefix.equals("/")) { YesNoPrompt.create(theme, this.parent) .title("Potential prefix conflict") .message("You have set your command prefix to '/', which is used by minecraft.") @@ -61,8 +60,7 @@ else if (prefix.equals("/")) { .onYes(() -> Config.get().prefix.set(".")) .id("minecraft-prefix-conflict") .show(); - } - else if (prefix.length() > 7) { + } else if (prefix.length() > 7) { YesNoPrompt.create(theme, this.parent) .title("Long command prefix") .message("You have set your command prefix to a very long string.") diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/FriendsTab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/FriendsTab.java index 600060ff3e..56003726ca 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/FriendsTab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/FriendsTab.java @@ -18,7 +18,7 @@ import meteordevelopment.meteorclient.systems.friends.Friends; import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.network.MeteorExecutor; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; import static meteordevelopment.meteorclient.MeteorClient.mc; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/GuiTab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/GuiTab.java index 35122c6551..cfcefcb3a0 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/GuiTab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/GuiTab.java @@ -15,7 +15,7 @@ import meteordevelopment.meteorclient.gui.widgets.input.WDropdown; import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; import meteordevelopment.meteorclient.utils.misc.NbtUtils; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; import static meteordevelopment.meteorclient.MeteorClient.mc; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/HudTab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/HudTab.java index 21236d2c1f..c039cd7e1e 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/HudTab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/HudTab.java @@ -17,8 +17,8 @@ import meteordevelopment.meteorclient.systems.hud.Hud; import meteordevelopment.meteorclient.systems.hud.screens.HudEditorScreen; import meteordevelopment.meteorclient.utils.misc.NbtUtils; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.Screen; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -76,7 +76,7 @@ public void initWidgets() { } @Override - protected void onRenderBefore(DrawContext drawContext, float delta) { + protected void onRenderBefore(GuiGraphics drawContext, float delta) { HudEditorScreen.renderElements(drawContext); } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/MacrosTab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/MacrosTab.java index 1ba286fd59..670fc385c8 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/MacrosTab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/MacrosTab.java @@ -18,7 +18,7 @@ import meteordevelopment.meteorclient.systems.macros.Macro; import meteordevelopment.meteorclient.systems.macros.Macros; import meteordevelopment.meteorclient.utils.misc.NbtUtils; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; import static meteordevelopment.meteorclient.MeteorClient.mc; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ModulesTab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ModulesTab.java index 093bbe2683..2e5ae725c3 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ModulesTab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ModulesTab.java @@ -9,7 +9,7 @@ import meteordevelopment.meteorclient.gui.GuiThemes; import meteordevelopment.meteorclient.gui.tabs.Tab; import meteordevelopment.meteorclient.gui.tabs.TabScreen; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; public class ModulesTab extends Tab { public ModulesTab() { diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/PathManagerTab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/PathManagerTab.java index d2fd0ade51..0ef4d1b3e8 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/PathManagerTab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/PathManagerTab.java @@ -11,7 +11,7 @@ import meteordevelopment.meteorclient.gui.tabs.WindowTabScreen; import meteordevelopment.meteorclient.gui.widgets.input.WTextBox; import meteordevelopment.meteorclient.pathing.PathManagers; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; public class PathManagerTab extends Tab { public PathManagerTab() { diff --git a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ProfilesTab.java b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ProfilesTab.java index 635a8b3142..354658b788 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ProfilesTab.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/tabs/builtin/ProfilesTab.java @@ -25,9 +25,9 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.render.prompts.OkPrompt; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import net.minecraft.nbt.NbtIo; import org.lwjgl.BufferUtils; import org.lwjgl.PointerBuffer; @@ -97,7 +97,8 @@ public void initWidgets() { importBtn.action = () -> { try { Profile imported = importProfile(); - if (imported != null) MeteorClient.LOG.info("Successfully imported profile '{}'.", imported.name.get()); + if (imported != null) + MeteorClient.LOG.info("Successfully imported profile '{}'.", imported.name.get()); reload(); } catch (IOException e) { MeteorClient.LOG.error("Error importing profile", e); @@ -146,7 +147,7 @@ private Profile importProfile() throws IOException { if (file == null) return null; File profileFile = new File(file); - NbtCompound nbt = NbtIo.read(profileFile.toPath()); + CompoundTag nbt = NbtIo.read(profileFile.toPath()); Profile p = new Profile(); p.name.set(nbt.getString("name", profileFile.getName())); @@ -154,7 +155,7 @@ private Profile importProfile() throws IOException { p.getFile().mkdirs(); nbt.remove("name"); - for (Map.Entry entry : nbt.entrySet()) { + for (Map.Entry entry : nbt.entrySet()) { String filename = entry.getKey(); switch (filename) { @@ -292,7 +293,7 @@ private void exportProfile(Profile profile, boolean hud, boolean macros, boolean if (path == null) return; Path p = Path.of(path.endsWith(".nbt") ? path : path + ".nbt"); - NbtCompound nbt = new NbtCompound(); + CompoundTag nbt = new NbtCompound(); nbt.putString("name", profile.name.get()); try { @@ -302,8 +303,7 @@ private void exportProfile(Profile profile, boolean hud, boolean macros, boolean f.getName().equals("modules.nbt") && modules ) { nbt.put(f.getName(), NbtIo.read(f.toPath())); - } - else if (f.getName().endsWith(".nbt") && waypoints) + } else if (f.getName().endsWith(".nbt") && waypoints) nbt.put(f.getName(), NbtIo.read(f.toPath())); } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/MeteorGuiTheme.java b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/MeteorGuiTheme.java index a2b5ffe06b..a1edc8354d 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/MeteorGuiTheme.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/MeteorGuiTheme.java @@ -30,7 +30,7 @@ import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.client.util.MacWindowUtil; +import com.mojang.blaze3d.platform.MacosUtil; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -104,11 +104,11 @@ public class MeteorGuiTheme extends GuiTheme { // Background public final ThreeStateColorSetting backgroundColor = new ThreeStateColorSetting( - sgBackgroundColors, - "background", - new SettingColor(20, 20, 20, 200), - new SettingColor(30, 30, 30, 200), - new SettingColor(40, 40, 40, 200) + sgBackgroundColors, + "background", + new SettingColor(20, 20, 20, 200), + new SettingColor(30, 30, 30, 200), + new SettingColor(40, 40, 40, 200) ); public final Setting moduleBackground = color(sgBackgroundColors, "module-background", "Color of module background when active.", new SettingColor(50, 50, 50)); @@ -116,11 +116,11 @@ public class MeteorGuiTheme extends GuiTheme { // Outline public final ThreeStateColorSetting outlineColor = new ThreeStateColorSetting( - sgOutline, - "outline", - new SettingColor(0, 0, 0), - new SettingColor(10, 10, 10), - new SettingColor(20, 20, 20) + sgOutline, + "outline", + new SettingColor(0, 0, 0), + new SettingColor(10, 10, 10), + new SettingColor(20, 20, 20) ); // Separator @@ -132,24 +132,24 @@ public class MeteorGuiTheme extends GuiTheme { // Scrollbar public final ThreeStateColorSetting scrollbarColor = new ThreeStateColorSetting( - sgScrollbar, - "Scrollbar", - new SettingColor(30, 30, 30, 200), - new SettingColor(40, 40, 40, 200), - new SettingColor(50, 50, 50, 200) + sgScrollbar, + "Scrollbar", + new SettingColor(30, 30, 30, 200), + new SettingColor(40, 40, 40, 200), + new SettingColor(50, 50, 50, 200) ); // Slider public final ThreeStateColorSetting sliderHandle = new ThreeStateColorSetting( - sgSlider, - "slider-handle", - new SettingColor(130, 0, 255), - new SettingColor(140, 30, 255), - new SettingColor(150, 60, 255) + sgSlider, + "slider-handle", + new SettingColor(130, 0, 255), + new SettingColor(140, 30, 255), + new SettingColor(150, 60, 255) ); - public final Setting sliderLeft = color(sgSlider, "slider-left", "Color of slider left part.", new SettingColor(100,35,170)); + public final Setting sliderLeft = color(sgSlider, "slider-left", "Color of slider left part.", new SettingColor(100, 35, 170)); public final Setting sliderRight = color(sgSlider, "slider-right", "Color of slider right part.", new SettingColor(50, 50, 50)); // Starscript @@ -173,11 +173,12 @@ public MeteorGuiTheme() { private Setting color(SettingGroup group, String name, String description, SettingColor color) { return group.add(new ColorSetting.Builder() - .name(name + "-color") - .description(description) - .defaultValue(color) - .build()); + .name(name + "-color") + .description(description) + .defaultValue(color) + .build()); } + private Setting color(String name, String description, SettingColor color) { return color(sgColors, name, description, color); } @@ -370,7 +371,7 @@ public TextRenderer textRenderer() { public double scale(double value) { double scaled = value * scale.get(); - if (MacWindowUtil.IS_MAC) { + if (MacosUtil.IS_MAC) { scaled /= (double) mc.getWindow().getWidth() / mc.getWindow().getFramebufferWidth(); } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorModule.java b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorModule.java index 7cd5bd1481..1bf15b22e7 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorModule.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/WMeteorModule.java @@ -11,7 +11,7 @@ import meteordevelopment.meteorclient.gui.utils.AlignmentX; import meteordevelopment.meteorclient.gui.widgets.pressable.WPressable; import meteordevelopment.meteorclient.systems.modules.Module; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.Mth; import static meteordevelopment.meteorclient.MeteorClient.mc; import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_LEFT; @@ -68,10 +68,10 @@ protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, doub double pad = pad(); animationProgress1 += delta * 4 * ((module.isActive() || mouseOver) ? 1 : -1); - animationProgress1 = MathHelper.clamp(animationProgress1, 0, 1); + animationProgress1 = Mth.clamp(animationProgress1, 0, 1); animationProgress2 += delta * 6 * (module.isActive() ? 1 : -1); - animationProgress2 = MathHelper.clamp(animationProgress2, 0, 1); + animationProgress2 = Mth.clamp(animationProgress2, 0, 1); if (animationProgress1 > 0) { renderer.quad(x, y, width * animationProgress1, height, theme.moduleBackground.get()); @@ -85,8 +85,7 @@ protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, doub if (theme.moduleAlignment.get() == AlignmentX.Center) { x += w / 2 - titleWidth / 2; - } - else if (theme.moduleAlignment.get() == AlignmentX.Right) { + } else if (theme.moduleAlignment.get() == AlignmentX.Right) { x += w - titleWidth; } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/input/WMeteorTextBox.java b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/input/WMeteorTextBox.java index 0e8b59229e..f2b740bb24 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/input/WMeteorTextBox.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/input/WMeteorTextBox.java @@ -15,7 +15,7 @@ import meteordevelopment.meteorclient.gui.widgets.containers.WVerticalList; import meteordevelopment.meteorclient.gui.widgets.input.WTextBox; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.Mth; public class WMeteorTextBox extends WTextBox implements MeteorWidget { private boolean cursorVisible; @@ -100,8 +100,7 @@ protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, doub if (cursorTimer >= 1) { cursorVisible = !cursorVisible; cursorTimer = 0; - } - else { + } else { cursorTimer += delta * 1.75; } @@ -116,8 +115,7 @@ protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, doub // Text content if (!text.isEmpty()) { this.renderer.render(renderer, x + pad - overflowWidth, y + pad, text, theme.textColor.get()); - } - else if (placeholder != null) { + } else if (placeholder != null) { this.renderer.render(renderer, x + pad - overflowWidth, y + pad, placeholder, theme.placeholderColor.get()); } @@ -131,7 +129,7 @@ else if (placeholder != null) { // Cursor animProgress += delta * 10 * (focused && cursorVisible ? 1 : -1); - animProgress = MathHelper.clamp(animProgress, 0, 1); + animProgress = Mth.clamp(animProgress, 0, 1); if ((focused && cursorVisible) || animProgress > 0) { renderer.setAlpha(animProgress); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/pressable/WMeteorCheckbox.java b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/pressable/WMeteorCheckbox.java index 1fa104c899..eba6d113a9 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/pressable/WMeteorCheckbox.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/themes/meteor/widgets/pressable/WMeteorCheckbox.java @@ -9,7 +9,7 @@ import meteordevelopment.meteorclient.gui.themes.meteor.MeteorGuiTheme; import meteordevelopment.meteorclient.gui.themes.meteor.MeteorWidget; import meteordevelopment.meteorclient.gui.widgets.pressable.WCheckbox; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.Mth; public class WMeteorCheckbox extends WCheckbox implements MeteorWidget { private double animProgress; @@ -24,7 +24,7 @@ protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, doub MeteorGuiTheme theme = theme(); animProgress += (checked ? 1 : -1) * delta * 14; - animProgress = MathHelper.clamp(animProgress, 0, 1); + animProgress = Mth.clamp(animProgress, 0, 1); renderBackground(renderer, this, pressed, mouseOver); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/utils/WindowConfig.java b/src/main/java/meteordevelopment/meteorclient/gui/utils/WindowConfig.java index 8ea1bb692d..464e7c85e2 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/utils/WindowConfig.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/utils/WindowConfig.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.gui.utils; import meteordevelopment.meteorclient.utils.misc.ISerializable; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; public class WindowConfig implements ISerializable { public boolean expanded = true; @@ -16,8 +16,8 @@ public class WindowConfig implements ISerializable { // Saving @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putBoolean("expanded", expanded); tag.putDouble("x", x); @@ -27,7 +27,7 @@ public NbtCompound toTag() { } @Override - public WindowConfig fromTag(NbtCompound tag) { + public WindowConfig fromTag(CompoundTag tag) { tag.getBoolean("expanded").ifPresent(bool -> expanded = bool); tag.getDouble("x").ifPresent(x1 -> x = x1); tag.getDouble("y").ifPresent(y1 -> y = y1); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WItem.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WItem.java index 059d1b90d9..116507da9c 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WItem.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WItem.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.gui.widgets; import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; -import net.minecraft.item.ItemStack; +import net.minecraft.world.item.ItemStack; public class WItem extends WWidget { protected ItemStack itemStack; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WItemWithLabel.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WItemWithLabel.java index cd7b4decfc..c0359c24b5 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WItemWithLabel.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WItemWithLabel.java @@ -7,11 +7,11 @@ import meteordevelopment.meteorclient.gui.widgets.containers.WHorizontalList; import meteordevelopment.meteorclient.utils.misc.Names; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffectUtil; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffectUtil; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import java.util.Iterator; @@ -39,15 +39,15 @@ private String getStringToAppend() { String str = ""; if (itemStack.getItem() == Items.POTION) { - Iterator effects = itemStack.getItem().getComponents().get(DataComponentTypes.POTION_CONTENTS).getEffects().iterator(); + Iterator effects = itemStack.getItem().getComponents().get(DataComponents.POTION_CONTENTS).getEffects().iterator(); if (!effects.hasNext()) return str; str += " "; - StatusEffectInstance effect = effects.next(); + MobEffectInstance effect = effects.next(); if (effect.getAmplifier() > 0) str += "%d ".formatted(effect.getAmplifier() + 1); - str += "(%s)".formatted(StatusEffectUtil.getDurationText(effect, 1, mc.world != null ? mc.world.getTickManager().getTickRate() : 20.0F).getString()); + str += "(%s)".formatted(MobEffectUtil.getDurationText(effect, 1, mc.world != null ? mc.world.getTickManager().getTickRate() : 20.0F).getString()); } return str; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WLabel.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WLabel.java index 2b7ff3c9fb..ba2890c36a 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WLabel.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WLabel.java @@ -7,7 +7,7 @@ import meteordevelopment.meteorclient.gui.widgets.pressable.WPressable; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.gui.Click; +import net.minecraft.client.input.MouseButtonEvent; public abstract class WLabel extends WPressable { public Color color; @@ -27,13 +27,13 @@ protected void onCalculateSize() { } @Override - public boolean onMouseClicked(Click click, boolean doubled) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { if (action != null) return super.onMouseClicked(click, doubled); return false; } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { if (action != null) return super.onMouseReleased(click); return false; } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WTopBar.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WTopBar.java index 5e20f5a3a5..d280b1865b 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WTopBar.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WTopBar.java @@ -12,7 +12,7 @@ import meteordevelopment.meteorclient.gui.widgets.containers.WHorizontalList; import meteordevelopment.meteorclient.gui.widgets.pressable.WPressable; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screens.Screen; import static meteordevelopment.meteorclient.MeteorClient.mc; import static org.lwjgl.glfw.GLFW.glfwSetCursorPos; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java index 873f9b01ef..139b15430b 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/WWidget.java @@ -9,9 +9,9 @@ import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; import meteordevelopment.meteorclient.gui.utils.BaseWidget; import meteordevelopment.meteorclient.gui.widgets.containers.WView; -import net.minecraft.client.gui.Click; -import net.minecraft.client.input.CharInput; -import net.minecraft.client.input.KeyInput; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.input.CharacterEvent; +import net.minecraft.client.input.KeyEvent; public abstract class WWidget implements BaseWidget { public boolean visible = true; @@ -29,7 +29,8 @@ public abstract class WWidget implements BaseWidget { protected boolean instantTooltips; protected double mouseOverTimer; - public void init() {} + public void init() { + } public void move(double deltaX, double deltaY) { x = Math.round(x + deltaX); @@ -84,8 +85,7 @@ public boolean render(GuiRenderer renderer, double mouseX, double mouseY, double WView view = getView(); if (view == null || view.mouseOver) renderer.tooltip(tooltip); } - } - else { + } else { mouseOverTimer = 0; } @@ -93,45 +93,66 @@ public boolean render(GuiRenderer renderer, double mouseX, double mouseY, double return false; } - protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, double delta) {} + protected void onRender(GuiRenderer renderer, double mouseX, double mouseY, double delta) { + } // Events - public boolean mouseClicked(Click click, boolean doubled) { + public boolean mouseClicked(MouseButtonEvent click, boolean doubled) { return onMouseClicked(click, doubled); } - public boolean onMouseClicked(Click click, boolean doubled) { return false; } - public boolean mouseReleased(Click click) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { + return false; + } + + public boolean mouseReleased(MouseButtonEvent click) { return onMouseReleased(click); } - public boolean onMouseReleased(Click click) { return false; } + + public boolean onMouseReleased(MouseButtonEvent click) { + return false; + } public void mouseMoved(double mouseX, double mouseY, double lastMouseX, double lastMouseY) { mouseOver = isOver(mouseX, mouseY); onMouseMoved(mouseX, mouseY, lastMouseX, lastMouseY); } - public void onMouseMoved(double mouseX, double mouseY, double lastMouseX, double lastMouseY) {} + + public void onMouseMoved(double mouseX, double mouseY, double lastMouseX, double lastMouseY) { + } public boolean mouseScrolled(double amount) { return onMouseScrolled(amount); } - public boolean onMouseScrolled(double amount) { return false; } - public boolean keyPressed(KeyInput input) { + public boolean onMouseScrolled(double amount) { + return false; + } + + public boolean keyPressed(KeyEvent input) { return onKeyPressed(input); } - public boolean onKeyPressed(KeyInput input) { return false; } - public boolean keyRepeated(KeyInput input) { + public boolean onKeyPressed(KeyEvent input) { + return false; + } + + public boolean keyRepeated(KeyEvent input) { return onKeyRepeated(input); } - public boolean onKeyRepeated(KeyInput input) { return false; } - public boolean charTyped(CharInput input) { + public boolean onKeyRepeated(KeyEvent input) { + return false; + } + + public boolean charTyped(CharacterEvent input) { return onCharTyped(input); } - public boolean onCharTyped(CharInput input) { return false; } + + public boolean onCharTyped(CharacterEvent input) { + return false; + } // Other diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WContainer.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WContainer.java index 41f875be85..a73076418b 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WContainer.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WContainer.java @@ -8,10 +8,10 @@ import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; import meteordevelopment.meteorclient.gui.utils.Cell; import meteordevelopment.meteorclient.gui.widgets.WWidget; -import net.minecraft.client.Mouse; -import net.minecraft.client.gui.Click; -import net.minecraft.client.input.CharInput; -import net.minecraft.client.input.KeyInput; +import net.minecraft.client.MouseHandler; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.input.CharacterEvent; +import net.minecraft.client.input.KeyEvent; import java.util.ArrayList; import java.util.ConcurrentModificationException; @@ -57,7 +57,7 @@ public void moveCells(double deltaX, double deltaY) { for (Cell cell : cells) { cell.move(deltaX, deltaY); - Mouse mouse = mc.mouse; + MouseHandler mouse = mc.mouse; cell.widget().mouseMoved(mouse.getX(), mouse.getY(), mouse.getX(), mouse.getY()); } } @@ -155,23 +155,25 @@ protected boolean propagateEvents(WWidget widget) { } @Override - public boolean mouseClicked(Click click, boolean doubled) { + public boolean mouseClicked(MouseButtonEvent click, boolean doubled) { try { for (Cell cell : cells) { if (propagateEvents(cell.widget()) && cell.widget().mouseClicked(click, doubled)) return true; } - } catch (ConcurrentModificationException ignored) {} + } catch (ConcurrentModificationException ignored) { + } return super.mouseClicked(click, doubled); } @Override - public boolean mouseReleased(Click click) { + public boolean mouseReleased(MouseButtonEvent click) { try { for (Cell cell : cells) { if (propagateEvents(cell.widget()) && cell.widget().mouseReleased(click)) return true; } - } catch (ConcurrentModificationException ignored) {} + } catch (ConcurrentModificationException ignored) { + } return super.mouseReleased(click); } @@ -182,7 +184,8 @@ public void mouseMoved(double mouseX, double mouseY, double lastMouseX, double l for (Cell cell : cells) { if (propagateEvents(cell.widget())) cell.widget().mouseMoved(mouseX, mouseY, lastMouseX, lastMouseY); } - } catch (ConcurrentModificationException ignored) {} + } catch (ConcurrentModificationException ignored) { + } super.mouseMoved(mouseX, mouseY, lastMouseX, lastMouseY); } @@ -193,40 +196,44 @@ public boolean mouseScrolled(double amount) { for (Cell cell : cells) { if (propagateEvents(cell.widget()) && cell.widget().mouseScrolled(amount)) return true; } - } catch (ConcurrentModificationException ignored) {} + } catch (ConcurrentModificationException ignored) { + } return super.mouseScrolled(amount); } @Override - public boolean keyPressed(KeyInput input) { + public boolean keyPressed(KeyEvent input) { try { for (Cell cell : cells) { if (propagateEvents(cell.widget()) && cell.widget().keyPressed(input)) return true; } - } catch (ConcurrentModificationException ignored) {} + } catch (ConcurrentModificationException ignored) { + } return onKeyPressed(input); } @Override - public boolean keyRepeated(KeyInput input) { + public boolean keyRepeated(KeyEvent input) { try { for (Cell cell : cells) { if (propagateEvents(cell.widget()) && cell.widget().keyRepeated(input)) return true; } - } catch (ConcurrentModificationException ignored) {} + } catch (ConcurrentModificationException ignored) { + } return onKeyRepeated(input); } @Override - public boolean charTyped(CharInput input) { + public boolean charTyped(CharacterEvent input) { try { for (Cell cell : cells) { if (propagateEvents(cell.widget()) && cell.widget().charTyped(input)) return true; } - } catch (ConcurrentModificationException ignored) {} + } catch (ConcurrentModificationException ignored) { + } return super.charTyped(input); } diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WSection.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WSection.java index 1f60c51992..acdac7e1df 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WSection.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WSection.java @@ -8,8 +8,8 @@ import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; import meteordevelopment.meteorclient.gui.utils.Cell; import meteordevelopment.meteorclient.gui.widgets.WWidget; -import net.minecraft.client.gui.Click; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.util.Mth; import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_LEFT; @@ -66,8 +66,7 @@ protected void onCalculateSize() { actualWidth = width; actualHeight = height; - } - else { + } else { width = actualWidth; height = forcedHeight; @@ -89,7 +88,7 @@ public boolean render(GuiRenderer renderer, double mouseX, double mouseY, double double preProgress = animProgress; animProgress += (expanded ? 1 : -1) * delta * 14; - animProgress = MathHelper.clamp(animProgress, 0, 1); + animProgress = Mth.clamp(animProgress, 0, 1); if (animProgress != preProgress) { forcedHeight = (actualHeight - header.height) * animProgress + header.height; @@ -124,7 +123,7 @@ public WHeader(String title) { } @Override - public boolean onMouseClicked(Click click, boolean doubled) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { if (mouseOver && click.button() == GLFW_MOUSE_BUTTON_LEFT && !doubled) { onClick(); return true; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WView.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WView.java index 1b36297081..15a14e5f68 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WView.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WView.java @@ -8,8 +8,8 @@ import meteordevelopment.meteorclient.gui.renderer.GuiRenderer; import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.client.gui.Click; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.util.Mth; import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_LEFT; @@ -51,8 +51,7 @@ protected void onCalculateSize() { } if (couldScroll) moveAfterPositionWidgets = true; - } - else { + } else { actualHeight = height; scroll = 0; targetScroll = 0; @@ -64,7 +63,7 @@ protected void onCalculateWidgetPositions() { super.onCalculateWidgetPositions(); if (moveAfterPositionWidgets) { - scroll = MathHelper.clamp(scroll, 0, actualHeight - height); + scroll = Mth.clamp(scroll, 0, actualHeight - height); targetScroll = scroll; moveCells(0, -scroll); @@ -74,7 +73,7 @@ protected void onCalculateWidgetPositions() { } @Override - public boolean onMouseClicked(Click click, boolean doubled) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { if (handleMouseOver && click.button() == GLFW_MOUSE_BUTTON_LEFT && !doubled) { setFocused(true); return true; @@ -84,7 +83,7 @@ public boolean onMouseClicked(Click click, boolean doubled) { } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { if (focused) setFocused(false); return false; @@ -110,7 +109,7 @@ public void onMouseMoved(double mouseX, double mouseY, double lastMouseX, double //scroll += Math.round(theme.scale(mouseDelta + mouseDelta * ((height / actualHeight) * 0.7627725))); //scroll += Math.round(theme.scale(mouseDelta * (1 / (height / actualHeight)))); scroll += Math.round(mouseDelta * ((actualHeight - handleHeight() / 2) / height)); - scroll = MathHelper.clamp(scroll, 0, actualHeight - height); + scroll = Mth.clamp(scroll, 0, actualHeight - height); targetScroll = scroll; @@ -125,7 +124,7 @@ public boolean onMouseScrolled(double amount) { double max = actualHeight - height; targetScroll -= Math.round(theme.scale(amount * 40)); - targetScroll = MathHelper.clamp(targetScroll, 0, max); + targetScroll = Mth.clamp(targetScroll, 0, max); // Only consume the event if the view actually scrolled, otherwise propagate to parent. return targetScroll > 0 && targetScroll < max; @@ -153,13 +152,12 @@ private void updateScroll(double delta) { else if (targetScroll > scroll) { scroll += Math.round(theme.scale(delta * 300 + delta * 100 * (Math.abs(targetScroll - scroll) / 10))); if (scroll > targetScroll) scroll = targetScroll; - } - else if (targetScroll < scroll) { + } else if (targetScroll < scroll) { scroll -= Math.round(theme.scale(delta * 300 + delta * 100 * (Math.abs(targetScroll - scroll) / 10))); if (scroll < targetScroll) scroll = targetScroll; } - scroll = MathHelper.clamp(scroll, 0, max); + scroll = Mth.clamp(scroll, 0, max); double change = scroll - preScroll; if (change != 0) moveCells(0, -change); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WWindow.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WWindow.java index 9d3fe57e2e..4b84785762 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WWindow.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/containers/WWindow.java @@ -10,8 +10,8 @@ import meteordevelopment.meteorclient.gui.utils.WindowConfig; import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.gui.widgets.pressable.WTriangle; -import net.minecraft.client.gui.Click; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.util.Mth; import java.util.function.Consumer; @@ -189,7 +189,7 @@ protected void onCalculateSize() { } @Override - public boolean onMouseClicked(Click click, boolean doubled) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { if (mouseOver && !doubled) { if (click.button() == GLFW_MOUSE_BUTTON_RIGHT) setExpanded(!expanded); else { @@ -204,7 +204,7 @@ public boolean onMouseClicked(Click click, boolean doubled) { } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { if (dragging) { dragging = false; @@ -237,7 +237,7 @@ public void onMouseMoved(double mouseX, double mouseY, double lastMouseX, double @Override public boolean render(GuiRenderer renderer, double mouseX, double mouseY, double delta) { animProgress += (expanded ? 1 : -1) * delta * 14; - animProgress = MathHelper.clamp(animProgress, 0, 1); + animProgress = Mth.clamp(animProgress, 0, 1); triangle.rotation = (1 - animProgress) * -90; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WBlockPosEdit.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WBlockPosEdit.java index ca1917fdd1..bb8b5444b5 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WBlockPosEdit.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WBlockPosEdit.java @@ -14,9 +14,9 @@ import meteordevelopment.meteorclient.systems.modules.render.marker.Marker; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.orbit.EventHandler; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.util.hit.HitResult; -import net.minecraft.util.math.BlockPos; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.world.phys.HitResult; +import net.minecraft.core.BlockPos; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -100,8 +100,7 @@ private boolean filter(String text, char c) { if (c == '-' && text.isEmpty()) { good = true; validate = false; - } - else good = Character.isDigit(c); + } else good = Character.isDigit(c); if (good && validate) { try { @@ -133,7 +132,8 @@ private void addTextBox() { else { try { set(new BlockPos(Integer.parseInt(textBoxX.get()), value.getY(), value.getZ())); - } catch (NumberFormatException ignored) {} + } catch (NumberFormatException ignored) { + } } newValueCheck(); }; @@ -144,7 +144,8 @@ private void addTextBox() { else { try { set(new BlockPos(value.getX(), Integer.parseInt(textBoxY.get()), value.getZ())); - } catch (NumberFormatException ignored) {} + } catch (NumberFormatException ignored) { + } } newValueCheck(); }; @@ -155,7 +156,8 @@ private void addTextBox() { else { try { set(new BlockPos(value.getX(), value.getY(), Integer.parseInt(textBoxZ.get()))); - } catch (NumberFormatException ignored) {} + } catch (NumberFormatException ignored) { + } } newValueCheck(); }; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WDropdown.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WDropdown.java index f3d3895d7a..bf20da4708 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WDropdown.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WDropdown.java @@ -11,10 +11,10 @@ import meteordevelopment.meteorclient.gui.widgets.containers.WVerticalList; import meteordevelopment.meteorclient.gui.widgets.containers.WView; import meteordevelopment.meteorclient.gui.widgets.pressable.WPressable; -import net.minecraft.client.gui.Click; -import net.minecraft.client.input.CharInput; -import net.minecraft.client.input.KeyInput; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.input.CharacterEvent; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.util.Mth; public abstract class WDropdown extends WPressable { public Runnable action; @@ -109,7 +109,7 @@ public boolean render(GuiRenderer renderer, double mouseX, double mouseY, double boolean render = super.render(renderer, mouseX, mouseY, delta); animProgress += (expanded ? 1 : -1) * delta * 14; - animProgress = MathHelper.clamp(animProgress, 0, 1); + animProgress = Mth.clamp(animProgress, 0, 1); WView view = getView(); boolean rootInView = view == null || view.isWidgetInView(root); @@ -130,7 +130,7 @@ public boolean render(GuiRenderer renderer, double mouseX, double mouseY, double // Events @Override - public boolean onMouseClicked(Click click, boolean doubled) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { boolean used = false; if (!mouseOver && !root.mouseOver) expanded = false; @@ -141,7 +141,7 @@ public boolean onMouseClicked(Click click, boolean doubled) { } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { if (super.onMouseReleased(click)) return true; return expanded && root.mouseReleased(click); @@ -166,21 +166,21 @@ public boolean onMouseScrolled(double amount) { } @Override - public boolean onKeyPressed(KeyInput input) { + public boolean onKeyPressed(KeyEvent input) { if (super.onKeyPressed(input)) return true; return expanded && root.keyPressed(input); } @Override - public boolean onKeyRepeated(KeyInput input) { + public boolean onKeyRepeated(KeyEvent input) { if (super.onKeyRepeated(input)) return true; return expanded && root.keyRepeated(input); } @Override - public boolean onCharTyped(CharInput input) { + public boolean onCharTyped(CharacterEvent input) { if (super.onCharTyped(input)) return true; return expanded && root.charTyped(input); @@ -190,7 +190,8 @@ public boolean onCharTyped(CharInput input) { protected abstract static class WDropdownRoot extends WVerticalList implements WRoot { @Override - public void invalidate() {} + public void invalidate() { + } } protected abstract class WDropdownValue extends WPressable { diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WSlider.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WSlider.java index a0ae60e4d0..73f6139a98 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WSlider.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WSlider.java @@ -6,8 +6,8 @@ package meteordevelopment.meteorclient.gui.widgets.input; import meteordevelopment.meteorclient.gui.widgets.WWidget; -import net.minecraft.client.gui.Click; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.util.Mth; public abstract class WSlider extends WWidget { public Runnable action; @@ -16,16 +16,16 @@ public abstract class WSlider extends WWidget { protected double value; protected double min, max; - // ghost slider for scrolling event - protected double scrollHandleX, scrollHandleY, scrollHandleH; - protected boolean scrollHandleMouseOver; + // ghost slider for scrolling event + protected double scrollHandleX, scrollHandleY, scrollHandleH; + protected boolean scrollHandleMouseOver; protected boolean handleMouseOver; protected boolean dragging; protected double valueAtDragStart; public WSlider(double value, double min, double max) { - this.value = MathHelper.clamp(value, min, max); + this.value = Mth.clamp(value, min, max); this.min = min; this.max = max; } @@ -43,7 +43,7 @@ protected void onCalculateSize() { } @Override - public boolean onMouseClicked(Click click, boolean doubled) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { if (mouseOver && !doubled) { valueAtDragStart = value; double handleSize = handleSize(); @@ -67,21 +67,21 @@ public void onMouseMoved(double mouseX, double mouseY, double lastMouseX, double double s2 = s / 2; double x = this.x + s2 + valueWidth - height / 2; - handleMouseOver = mouseX >= x && mouseX <= x + height && mouseY >= y && mouseY <= y + height; - - if(!scrollHandleMouseOver) { - scrollHandleX = x; - scrollHandleY = y; - scrollHandleH = height; - if(handleMouseOver) { - scrollHandleMouseOver = true; - } - } else { - scrollHandleMouseOver = mouseX >= scrollHandleX && - mouseX <= scrollHandleX + scrollHandleH && - mouseY >= scrollHandleY && - mouseY <= scrollHandleY + scrollHandleH; - } + handleMouseOver = mouseX >= x && mouseX <= x + height && mouseY >= y && mouseY <= y + height; + + if (!scrollHandleMouseOver) { + scrollHandleX = x; + scrollHandleY = y; + scrollHandleH = height; + if (handleMouseOver) { + scrollHandleMouseOver = true; + } + } else { + scrollHandleMouseOver = mouseX >= scrollHandleX && + mouseX <= scrollHandleX + scrollHandleH && + mouseY >= scrollHandleY && + mouseY <= scrollHandleY + scrollHandleH; + } boolean mouseOverX = mouseX >= this.x + s2 && mouseX <= this.x + s2 + width - s; mouseOver = mouseOverX && mouseY >= this.y && mouseY <= this.y + height; @@ -89,7 +89,7 @@ public void onMouseMoved(double mouseX, double mouseY, double lastMouseX, double if (dragging) { if (mouseOverX) { valueWidth += mouseX - lastMouseX; - valueWidth = MathHelper.clamp(valueWidth, 0, width - s); + valueWidth = Mth.clamp(valueWidth, 0, width - s); set((valueWidth / (width - s)) * (max - min) + min); if (action != null) action.run(); @@ -106,7 +106,7 @@ public void onMouseMoved(double mouseX, double mouseY, double lastMouseX, double } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { if (dragging) { if (value != valueAtDragStart && actionOnRelease != null) { actionOnRelease.run(); @@ -120,35 +120,34 @@ public boolean onMouseReleased(Click click) { return false; } - @Override - public boolean onMouseScrolled(double amount) { - // when user starts to scroll over regular handle - // remember its position and check only this "ghost" - // position to allow scroll (until it leaves ghost area) - if (!scrollHandleMouseOver && handleMouseOver) { - scrollHandleX = x; - scrollHandleY = y; - scrollHandleH = height; - scrollHandleMouseOver = true; - } - - if (scrollHandleMouseOver) { - if (parent instanceof WIntEdit) { - set(value + amount); - } - else { - set(value + 0.05 * amount); - } - - if (action != null) action.run(); - return true; - } - - return false; - } + @Override + public boolean onMouseScrolled(double amount) { + // when user starts to scroll over regular handle + // remember its position and check only this "ghost" + // position to allow scroll (until it leaves ghost area) + if (!scrollHandleMouseOver && handleMouseOver) { + scrollHandleX = x; + scrollHandleY = y; + scrollHandleH = height; + scrollHandleMouseOver = true; + } + + if (scrollHandleMouseOver) { + if (parent instanceof WIntEdit) { + set(value + amount); + } else { + set(value + 0.05 * amount); + } + + if (action != null) action.run(); + return true; + } + + return false; + } public void set(double value) { - this.value = MathHelper.clamp(value, min, max); + this.value = Mth.clamp(value, min, max); } public double get() { diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WTextBox.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WTextBox.java index db29af084b..9d9406f88e 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WTextBox.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WTextBox.java @@ -14,11 +14,11 @@ import meteordevelopment.meteorclient.gui.widgets.WWidget; import meteordevelopment.meteorclient.gui.widgets.containers.WContainer; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.gui.Click; -import net.minecraft.client.input.CharInput; -import net.minecraft.client.input.KeyInput; -import net.minecraft.client.util.MacWindowUtil; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.input.CharacterEvent; +import net.minecraft.client.input.KeyEvent; +import com.mojang.blaze3d.platform.MacosUtil; +import net.minecraft.util.Mth; import org.apache.commons.lang3.SystemUtils; import java.lang.reflect.InvocationTargetException; @@ -63,7 +63,8 @@ public WTextBox(String text, String placeholder, CharFilter filter, Class selectionEnd) { + } else if (best > selectionEnd) { selectionEnd = best + countToNextSpace(false, best); cursor = selectionEnd; - } - else { + } else { if (cursor == selectionStart) { int nextRight = countToNextSpace(false); if (best > cursor + nextRight) { @@ -214,8 +212,7 @@ else if (best > selectionEnd) { cursor = selectionEnd; } } - } - else if (cursor == selectionEnd) { + } else if (cursor == selectionEnd) { int nextLeft = countToNextSpace(true); if (best < cursor - nextLeft) { selectionEnd = cursor = cursor - nextLeft - 1; @@ -226,14 +223,13 @@ else if (cursor == selectionEnd) { } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { selecting = false; doubleClick = false; if (selectionStart < preSelectionCursor && preSelectionCursor == selectionEnd) { cursor = selectionStart; - } - else if (selectionEnd > preSelectionCursor && preSelectionCursor == selectionStart) { + } else if (selectionEnd > preSelectionCursor && preSelectionCursor == selectionStart) { cursor = selectionEnd; } @@ -241,40 +237,35 @@ else if (selectionEnd > preSelectionCursor && preSelectionCursor == selectionSta } @Override - public boolean onKeyPressed(KeyInput input) { + public boolean onKeyPressed(KeyEvent input) { if (!focused) return false; - boolean control = MacWindowUtil.IS_MAC ? input.modifiers() == GLFW_MOD_SUPER : input.modifiers() == GLFW_MOD_CONTROL; + boolean control = MacosUtil.IS_MAC ? input.modifiers() == GLFW_MOD_SUPER : input.modifiers() == GLFW_MOD_CONTROL; if (control && input.key() == GLFW_KEY_C) { if (cursor != selectionStart || cursor != selectionEnd) { mc.keyboard.setClipboard(text.substring(selectionStart, selectionEnd)); } return true; - } - else if (control && input.key() == GLFW_KEY_X) { + } else if (control && input.key() == GLFW_KEY_X) { if (cursor != selectionStart || cursor != selectionEnd) { mc.keyboard.setClipboard(text.substring(selectionStart, selectionEnd)); clearSelection(); } return true; - } - else if (control && input.key() == GLFW_KEY_A) { + } else if (control && input.key() == GLFW_KEY_A) { cursor = text.length(); selectionStart = 0; selectionEnd = cursor; - } - else if (input.modifiers() == ((MacWindowUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL) | GLFW_MOD_SHIFT) && input.key() == GLFW_KEY_A) { + } else if (input.modifiers() == ((MacosUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL) | GLFW_MOD_SHIFT) && input.key() == GLFW_KEY_A) { resetSelection(); - } - else if (input.key() == GLFW_KEY_ENTER || input.key() == GLFW_KEY_KP_ENTER) { + } else if (input.key() == GLFW_KEY_ENTER || input.key() == GLFW_KEY_KP_ENTER) { setFocused(false); if (actionOnUnfocused != null) actionOnUnfocused.run(); return true; - } - else if (input.key() == GLFW_KEY_TAB && completionsW != null) { + } else if (input.key() == GLFW_KEY_TAB && completionsW != null) { String completion = ((ICompletionItem) completionsW.cells.get(getSelectedCompletion()).widget()).getCompletion(); StringBuilder sb = new StringBuilder(text.length() + completion.length() + 1); @@ -305,12 +296,12 @@ else if (input.key() == GLFW_KEY_TAB && completionsW != null) { } @Override - public boolean onKeyRepeated(KeyInput input) { + public boolean onKeyRepeated(KeyEvent input) { if (!focused) return false; - boolean control = MacWindowUtil.IS_MAC ? input.modifiers() == GLFW_MOD_SUPER : input.modifiers() == GLFW_MOD_CONTROL; + boolean control = MacosUtil.IS_MAC ? input.modifiers() == GLFW_MOD_SUPER : input.modifiers() == GLFW_MOD_CONTROL; boolean shift = input.modifiers() == GLFW_MOD_SHIFT; - boolean controlShift = input.modifiers() == ((SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_ALT : MacWindowUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL) | GLFW_MOD_SHIFT); + boolean controlShift = input.modifiers() == ((SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_ALT : MacosUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL) | GLFW_MOD_SHIFT); boolean altShift = input.modifiers() == ((SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_CONTROL : GLFW_MOD_ALT) | GLFW_MOD_SHIFT); if (control && input.key() == GLFW_KEY_V) { @@ -337,51 +328,46 @@ public boolean onKeyRepeated(KeyInput input) { if (!text.equals(preText)) runAction(); return true; - } - else if (input.key() == GLFW_KEY_BACKSPACE) { + } else if (input.key() == GLFW_KEY_BACKSPACE) { if (cursor > 0 && cursor == selectionStart && cursor == selectionEnd) { String preText = text; - int count = (input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_ALT : MacWindowUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL)) + int count = (input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_ALT : MacosUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL)) ? cursor : (input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_CONTROL : GLFW_MOD_ALT)) - ? countToNextSpace(true) - : 1; + ? countToNextSpace(true) + : 1; text = text.substring(0, cursor - count) + text.substring(cursor); cursor -= count; resetSelection(); if (!text.equals(preText)) runAction(); - } - else if (cursor != selectionStart || cursor != selectionEnd) { + } else if (cursor != selectionStart || cursor != selectionEnd) { clearSelection(); } return true; - } - else if (input.key() == GLFW_KEY_DELETE) { + } else if (input.key() == GLFW_KEY_DELETE) { if (cursor == selectionStart && cursor == selectionEnd) { if (cursor < text.length()) { String preText = text; - int count = input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_ALT : MacWindowUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL) + int count = input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_ALT : MacosUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL) ? text.length() - cursor : (input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_CONTROL : GLFW_MOD_ALT)) - ? countToNextSpace(false) - : 1; + ? countToNextSpace(false) + : 1; text = text.substring(0, cursor) + text.substring(cursor + count); if (!text.equals(preText)) runAction(); } - } - else { + } else { clearSelection(); } return true; - } - else if (input.key() == GLFW_KEY_LEFT) { + } else if (input.key() == GLFW_KEY_LEFT) { if (cursor > 0) { // sets the cursor to just after the next leftmost space if (input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_CONTROL : GLFW_MOD_ALT)) { @@ -389,7 +375,7 @@ else if (input.key() == GLFW_KEY_LEFT) { resetSelection(); } // sets the cursor to the beginning of the text box - else if (input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_ALT : MacWindowUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL)) { + else if (input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_ALT : MacosUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL)) { cursor = 0; resetSelection(); } @@ -402,8 +388,7 @@ else if (altShift) { selectionEnd = selectionStart; selectionStart = cursor; } - } - else { + } else { cursor -= countToNextSpace(true); selectionStart = cursor; } @@ -421,8 +406,7 @@ else if (controlShift) { else if (shift) { if (cursor == selectionEnd && cursor != selectionStart) { selectionEnd = cursor - 1; - } - else { + } else { selectionStart = cursor - 1; } @@ -432,8 +416,7 @@ else if (shift) { else { if (cursor == selectionEnd && cursor != selectionStart) { cursor = selectionStart; - } - else { + } else { cursor--; } @@ -441,16 +424,14 @@ else if (shift) { } cursorChanged(); - } - else if (selectionStart != selectionEnd && selectionStart == 0 && input.modifiers() == 0) { + } else if (selectionStart != selectionEnd && selectionStart == 0 && input.modifiers() == 0) { cursor = 0; resetSelection(); cursorChanged(); } return true; - } - else if (input.key() == GLFW_KEY_RIGHT) { + } else if (input.key() == GLFW_KEY_RIGHT) { if (cursor < text.length()) { // sets the cursor to just before the next rightmost space if (input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_CONTROL : GLFW_MOD_ALT)) { @@ -458,7 +439,7 @@ else if (input.key() == GLFW_KEY_RIGHT) { resetSelection(); } // sets the cursor to the end of the text box - else if (input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_ALT : MacWindowUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL)) { + else if (input.modifiers() == (SystemUtils.IS_OS_WINDOWS ? GLFW_MOD_ALT : MacosUtil.IS_MAC ? GLFW_MOD_SUPER : GLFW_MOD_CONTROL)) { cursor = text.length(); resetSelection(); } @@ -471,8 +452,7 @@ else if (altShift) { selectionStart = selectionEnd; selectionEnd = cursor; } - } - else { + } else { cursor += countToNextSpace(false); selectionEnd = cursor; } @@ -489,8 +469,7 @@ else if (controlShift) { else if (shift) { if (cursor == selectionStart && cursor != selectionEnd) { selectionStart = cursor + 1; - } - else { + } else { selectionEnd = cursor + 1; } @@ -500,8 +479,7 @@ else if (shift) { else { if (cursor == selectionStart && cursor != selectionEnd) { cursor = selectionEnd; - } - else { + } else { cursor++; } @@ -509,16 +487,14 @@ else if (shift) { } cursorChanged(); - } - else if (selectionStart != selectionEnd && selectionEnd == text.length() && input.modifiers() == 0) { + } else if (selectionStart != selectionEnd && selectionEnd == text.length() && input.modifiers() == 0) { cursor = text.length(); resetSelection(); cursorChanged(); } return true; - } - else if (input.key() == GLFW_KEY_DOWN && completionsW != null) { + } else if (input.key() == GLFW_KEY_DOWN && completionsW != null) { int currentI = getSelectedCompletion(); if (currentI == Math.min(5, completions.size() - 1)) { @@ -526,15 +502,13 @@ else if (input.key() == GLFW_KEY_DOWN && completionsW != null) { completionsStart++; createCompletions(completionsStart + currentI); } - } - else { + } else { ((ICompletionItem) completionsW.cells.get(currentI).widget()).setSelected(false); ((ICompletionItem) completionsW.cells.get(currentI + 1).widget()).setSelected(true); } return true; - } - else if (input.key() == GLFW_KEY_UP && completionsW != null) { + } else if (input.key() == GLFW_KEY_UP && completionsW != null) { int currentI = getSelectedCompletion(); if (currentI == 0) { @@ -542,8 +516,7 @@ else if (input.key() == GLFW_KEY_UP && completionsW != null) { completionsStart--; createCompletions(completionsStart + currentI); } - } - else { + } else { ((ICompletionItem) completionsW.cells.get(currentI).widget()).setSelected(false); ((ICompletionItem) completionsW.cells.get(currentI - 1).widget()).setSelected(true); } @@ -566,7 +539,7 @@ private int getSelectedCompletion() { } @Override - public boolean onCharTyped(CharInput input) { + public boolean onCharTyped(CharacterEvent input) { if (!focused) return false; if (filter.filter(text, input.codepoint())) { @@ -671,7 +644,7 @@ private void cursorChanged() { textStart += cursor - (textStart + maxTextWidth()); } - textStart = MathHelper.clamp(textStart, 0, Math.max(textWidth() - maxTextWidth(), 0)); + textStart = Mth.clamp(textStart, 0, Math.max(textWidth() - maxTextWidth(), 0)); onCursorChanged(); @@ -681,7 +654,9 @@ private void cursorChanged() { completionsW = null; if (completions != null && !completions.isEmpty()) createCompletions(0); } - protected void onCursorChanged() {} + + protected void onCursorChanged() { + } private void createCompletions(int selected) { completionsW = createCompletionsRootWidget(); @@ -726,7 +701,7 @@ public String get() { public void set(String text) { this.text = text; - cursor = MathHelper.clamp(cursor, 0, text.length()); + cursor = Mth.clamp(cursor, 0, text.length()); selectionStart = cursor; selectionEnd = cursor; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WConfirmedButton.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WConfirmedButton.java index bbb1a4cbc4..d66ad49ed6 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WConfirmedButton.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WConfirmedButton.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.gui.widgets.pressable; import meteordevelopment.meteorclient.gui.renderer.packer.GuiTexture; -import net.minecraft.client.gui.Click; +import net.minecraft.client.input.MouseButtonEvent; public abstract class WConfirmedButton extends WButton { @@ -19,7 +19,7 @@ public WConfirmedButton(String text, String confirmText, GuiTexture texture) { } @Override - public boolean onMouseClicked(Click click, boolean doubled) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { boolean pressed = super.onMouseClicked(click, doubled); if (!pressed) { pressedOnce = false; @@ -29,7 +29,7 @@ public boolean onMouseClicked(Click click, boolean doubled) { } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { if (pressed && pressedOnce) super.onMouseReleased(click); pressedOnce = pressed; invalidate(); diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WConfirmedMinus.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WConfirmedMinus.java index 31381dd52e..189c5d42f4 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WConfirmedMinus.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WConfirmedMinus.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.gui.widgets.pressable; -import net.minecraft.client.gui.Click; +import net.minecraft.client.input.MouseButtonEvent; public class WConfirmedMinus extends WMinus { protected boolean pressedOnce = false; @Override - public boolean onMouseClicked(Click click, boolean doubled) { + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { boolean pressed = super.onMouseClicked(click, doubled); if (!pressed) { pressedOnce = false; @@ -20,7 +20,7 @@ public boolean onMouseClicked(Click click, boolean doubled) { } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { if (pressed && pressedOnce) super.onMouseReleased(click); pressedOnce = pressed; return pressed = false; diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WPressable.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WPressable.java index 93406f51cb..ac58f20c63 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WPressable.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/pressable/WPressable.java @@ -6,7 +6,7 @@ package meteordevelopment.meteorclient.gui.widgets.pressable; import meteordevelopment.meteorclient.gui.widgets.WWidget; -import net.minecraft.client.gui.Click; +import net.minecraft.client.input.MouseButtonEvent; import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_LEFT; import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_RIGHT; @@ -17,13 +17,14 @@ public abstract class WPressable extends WWidget { protected boolean pressed; @Override - public boolean onMouseClicked(Click click, boolean doubled) { - if (mouseOver && (click.button() == GLFW_MOUSE_BUTTON_LEFT || click.button() == GLFW_MOUSE_BUTTON_RIGHT)) pressed = true; + public boolean onMouseClicked(MouseButtonEvent click, boolean doubled) { + if (mouseOver && (click.button() == GLFW_MOUSE_BUTTON_LEFT || click.button() == GLFW_MOUSE_BUTTON_RIGHT)) + pressed = true; return pressed; } @Override - public boolean onMouseReleased(Click click) { + public boolean onMouseReleased(MouseButtonEvent click) { if (pressed) { onPressed(click.button()); if (action != null) action.run(); @@ -34,5 +35,6 @@ public boolean onMouseReleased(Click click) { return false; } - protected void onPressed(int button) {} + protected void onPressed(int button) { + } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockStateMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockStateMixin.java index b47e5b9935..87f53a5d72 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockStateMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockStateMixin.java @@ -7,20 +7,20 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.block.AbstractBlock; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(AbstractBlock.AbstractBlockState.class) +@Mixin(BlockBehaviour.BlockStateBase.class) public abstract class AbstractBlockStateMixin { - @Inject(method = "getModelOffset", at = @At("HEAD"), cancellable = true) - private void modifyPos(BlockPos pos, CallbackInfoReturnable info) { + @Inject(method = "getOffset", at = @At("HEAD"), cancellable = true) + private void modifyPos(BlockPos pos, CallbackInfoReturnable info) { if (Modules.get() == null) return; - if (Modules.get().get(NoRender.class).noTextureRotations()) info.setReturnValue(Vec3d.ZERO); + if (Modules.get().get(NoRender.class).noTextureRotations()) info.setReturnValue(Vec3.ZERO); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBoatEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBoatMixin.java similarity index 56% rename from src/main/java/meteordevelopment/meteorclient/mixin/AbstractBoatEntityMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/AbstractBoatMixin.java index 14313115cb..12d6da6f89 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBoatEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBoatMixin.java @@ -8,22 +8,24 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.EntityControl; -import net.minecraft.entity.vehicle.AbstractBoatEntity; +import net.minecraft.world.entity.vehicle.boat.AbstractBoat; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(AbstractBoatEntity.class) -public abstract class AbstractBoatEntityMixin { - @ModifyExpressionValue(method = "updatePaddles", at = @At(value = "FIELD", target = "Lnet/minecraft/entity/vehicle/AbstractBoatEntity;pressingLeft:Z", opcode = Opcodes.GETFIELD)) +@Mixin(AbstractBoat.class) +public abstract class AbstractBoatMixin { + @ModifyExpressionValue(method = "controlBoat", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/vehicle/boat/AbstractBoat;inputLeft:Z", opcode = Opcodes.GETFIELD)) private boolean modifyPressingLeft(boolean original) { - if (Modules.get().isActive(EntityControl.class) && Modules.get().get(EntityControl.class).lockYaw.get()) return false; + if (Modules.get().isActive(EntityControl.class) && Modules.get().get(EntityControl.class).lockYaw.get()) + return false; return original; } - @ModifyExpressionValue(method = "updatePaddles", at = @At(value = "FIELD", target = "Lnet/minecraft/entity/vehicle/AbstractBoatEntity;pressingRight:Z", opcode = Opcodes.GETFIELD)) + @ModifyExpressionValue(method = "controlBoat", at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/vehicle/boat/AbstractBoat;inputRight:Z", opcode = Opcodes.GETFIELD)) private boolean modifyPressingRight(boolean original) { - if (Modules.get().isActive(EntityControl.class) && Modules.get().get(EntityControl.class).lockYaw.get()) return false; + if (Modules.get().isActive(EntityControl.class) && Modules.get().get(EntityControl.class).lockYaw.get()) + return false; return original; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerAccessor.java new file mode 100644 index 0000000000..c9a24d698c --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerAccessor.java @@ -0,0 +1,17 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.multiplayer.PlayerInfo; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(AbstractClientPlayer.class) +public interface AbstractClientPlayerAccessor { + @Accessor("playerInfo") + void meteor$setPlayerInfo(PlayerInfo entry); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerEntityAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerEntityAccessor.java deleted file mode 100644 index de34fcf50f..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerEntityAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.client.network.AbstractClientPlayerEntity; -import net.minecraft.client.network.PlayerListEntry; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(AbstractClientPlayerEntity.class) -public interface AbstractClientPlayerEntityAccessor { - @Accessor("playerListEntry") - void meteor$setPlayerListEntry(PlayerListEntry entry); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerMixin.java similarity index 70% rename from src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerEntityMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerMixin.java index 08afee7b20..9e0c1482e2 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractClientPlayerMixin.java @@ -6,8 +6,8 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.utils.misc.FakeClientPlayer; -import net.minecraft.client.network.AbstractClientPlayerEntity; -import net.minecraft.client.network.PlayerListEntry; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.multiplayer.PlayerInfo; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -15,12 +15,12 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; -@Mixin(AbstractClientPlayerEntity.class) -public abstract class AbstractClientPlayerEntityMixin { +@Mixin(AbstractClientPlayer.class) +public abstract class AbstractClientPlayerMixin { // Player model rendering in main menu - @Inject(method = "getPlayerListEntry", at = @At("HEAD"), cancellable = true) - private void onGetPlayerListEntry(CallbackInfoReturnable info) { + @Inject(method = "getPlayerInfo", at = @At("HEAD"), cancellable = true) + private void onGetPlayerListEntry(CallbackInfoReturnable info) { if (mc.getNetworkHandler() == null) info.setReturnValue(FakeClientPlayer.getPlayerListEntry()); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractContainerScreenAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractContainerScreenAccessor.java new file mode 100644 index 0000000000..70ef8225ab --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractContainerScreenAccessor.java @@ -0,0 +1,17 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.world.inventory.Slot; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(AbstractContainerScreen.class) +public interface AbstractContainerScreenAccessor { + @Accessor("hoveredSlot") + Slot meteor$getHoveredSlot(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/HandledScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractContainerScreenMixin.java similarity index 51% rename from src/main/java/meteordevelopment/meteorclient/mixin/HandledScreenMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/AbstractContainerScreenMixin.java index abfc0ae13d..8c609a8982 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/HandledScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractContainerScreenMixin.java @@ -10,19 +10,19 @@ import meteordevelopment.meteorclient.systems.modules.misc.InventoryTweaks; import meteordevelopment.meteorclient.systems.modules.render.BetterTooltips; import meteordevelopment.meteorclient.systems.modules.render.ItemHighlight; -import net.minecraft.client.gui.Click; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.client.gui.screen.ingame.ScreenHandlerProvider; -import net.minecraft.client.gui.tooltip.TooltipComponent; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.input.KeyInput; -import net.minecraft.item.ItemStack; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.screen.slot.Slot; -import net.minecraft.screen.slot.SlotActionType; -import net.minecraft.text.Text; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.inventory.MenuAccess; +import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.network.chat.Component; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -34,33 +34,33 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; import static org.lwjgl.glfw.GLFW.GLFW_MOUSE_BUTTON_LEFT; -@Mixin(HandledScreen.class) -public abstract class HandledScreenMixin extends Screen implements ScreenHandlerProvider { +@Mixin(AbstractContainerScreen.class) +public abstract class AbstractContainerScreenMixin extends Screen implements MenuAccess { @Shadow - protected Slot focusedSlot; + protected Slot hoveredSlot; @Shadow - protected int x; + protected int leftPos; @Shadow - protected int y; + protected int topPos; @Shadow @Nullable - protected abstract Slot getSlotAt(double xPosition, double yPosition); + protected abstract Slot getHoveredSlot(double xPosition, double yPosition); @Shadow public abstract T getScreenHandler(); @Shadow - private boolean doubleClicking; + private boolean doubleclick; @Shadow - protected abstract void onMouseClick(Slot slot, int invSlot, int clickData, SlotActionType actionType); + protected abstract void slotClicked(Slot slot, int invSlot, int clickData, ClickType actionType); @Shadow public abstract void close(); - public HandledScreenMixin(Text title) { + public AbstractContainerScreenMixin(Component title) { super(title); } @@ -70,15 +70,15 @@ private void onInit(CallbackInfo info) { if (invTweaks.isActive() && invTweaks.showButtons() && invTweaks.canSteal(getScreenHandler())) { addDrawableChild( - new ButtonWidget.Builder(Text.literal("Steal"), button -> invTweaks.steal(getScreenHandler())) - .position(x, y - 22) + new Button.Builder(Component.literal("Steal"), button -> invTweaks.steal(getScreenHandler())) + .position(leftPos, topPos - 22) .size(40, 20) .build() ); addDrawableChild( - new ButtonWidget.Builder(Text.literal("Dump"), button -> invTweaks.dump(getScreenHandler())) - .position(x + 42, y - 22) + new Button.Builder(Component.literal("Dump"), button -> invTweaks.dump(getScreenHandler())) + .position(leftPos + 42, topPos - 22) .size(40, 20) .build() ); @@ -87,20 +87,22 @@ private void onInit(CallbackInfo info) { // Inventory Tweaks @Inject(method = "mouseDragged", at = @At("TAIL")) - private void onMouseDragged(Click click, double offsetX, double offsetY, CallbackInfoReturnable cir) { - if (click.button() != GLFW_MOUSE_BUTTON_LEFT || doubleClicking || !Modules.get().get(InventoryTweaks.class).mouseDragItemMove()) return; + private void onMouseDragged(MouseButtonEvent click, double offsetX, double offsetY, CallbackInfoReturnable cir) { + if (click.button() != GLFW_MOUSE_BUTTON_LEFT || doubleclick || !Modules.get().get(InventoryTweaks.class).mouseDragItemMove()) + return; - Slot slot = getSlotAt(click.x(), click.y()); - if (slot != null && slot.hasStack() && mc.isShiftPressed()) onMouseClick(slot, slot.id, click.button(), SlotActionType.QUICK_MOVE); + Slot slot = getHoveredSlot(click.x(), click.y()); + if (slot != null && slot.hasStack() && mc.isShiftPressed()) + slotClicked(slot, slot.id, click.button(), ClickType.QUICK_MOVE); } // Middle click open @Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true) - private void mouseClicked(Click click, boolean doubled, CallbackInfoReturnable cir) { + private void mouseClicked(MouseButtonEvent click, boolean doubled, CallbackInfoReturnable cir) { BetterTooltips tooltips = Modules.get().get(BetterTooltips.class); - if (tooltips.shouldOpenContents(click) && focusedSlot != null && !focusedSlot.getStack().isEmpty() && getScreenHandler().getCursorStack().isEmpty()) { - if (tooltips.openContent(focusedSlot.getStack())) { + if (tooltips.shouldOpenContents(click) && hoveredSlot != null && !hoveredSlot.getStack().isEmpty() && getScreenHandler().getCursorStack().isEmpty()) { + if (tooltips.openContent(hoveredSlot.getStack())) { cir.setReturnValue(true); } } @@ -108,26 +110,26 @@ private void mouseClicked(Click click, boolean doubled, CallbackInfoReturnable cir) { + private void keyPressed(KeyEvent input, CallbackInfoReturnable cir) { BetterTooltips tooltips = Modules.get().get(BetterTooltips.class); - if (tooltips.shouldOpenContents(input) && focusedSlot != null && !focusedSlot.getStack().isEmpty() && getScreenHandler().getCursorStack().isEmpty()) { - if (tooltips.openContent(focusedSlot.getStack())) { + if (tooltips.shouldOpenContents(input) && hoveredSlot != null && !hoveredSlot.getStack().isEmpty() && getScreenHandler().getCursorStack().isEmpty()) { + if (tooltips.openContent(hoveredSlot.getStack())) { cir.setReturnValue(true); } } } // Item Highlight - @Inject(method = "drawSlot", at = @At("HEAD")) - private void onDrawSlot(DrawContext context, Slot slot, int mouseX, int mouseY, CallbackInfo ci) { + @Inject(method = "renderSlot", at = @At("HEAD")) + private void onDrawSlot(GuiGraphics context, Slot slot, int mouseX, int mouseY, CallbackInfo ci) { int color = Modules.get().get(ItemHighlight.class).getColor(slot.getStack()); if (color != -1) context.fill(slot.x, slot.y, slot.x + 16, slot.y + 16, color); } - @ModifyReturnValue(method = "isItemTooltipSticky", at = @At("RETURN")) + @ModifyReturnValue(method = "showTooltipWithItemInHand", at = @At("RETURN")) private boolean isTooltipSticky(boolean original, ItemStack item) { - if (item.getTooltipData().orElse(null) instanceof TooltipComponent component) { + if (item.getTooltipData().orElse(null) instanceof ClientTooltipComponent component) { return original || component.isSticky(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractFurnaceScreenHandlerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractFurnaceScreenHandlerMixin.java index 807dae715a..2de0f2aabc 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractFurnaceScreenHandlerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractFurnaceScreenHandlerMixin.java @@ -6,13 +6,17 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.IAbstractFurnaceScreenHandler; -import net.minecraft.item.ItemStack; -import net.minecraft.screen.AbstractFurnaceScreenHandler; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.AbstractFurnaceMenu; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +// TODO(Ravel): can not resolve target class AbstractFurnaceScreenHandler +// TODO(Ravel): can not resolve target class AbstractFurnaceScreenHandler @Mixin(AbstractFurnaceScreenHandler.class) public abstract class AbstractFurnaceScreenHandlerMixin implements IAbstractFurnaceScreenHandler { + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow protected abstract boolean isSmeltable(ItemStack itemStack); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractFurnaceScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractFurnaceScreenMixin.java index c773b0b5cf..adfddf17b8 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractFurnaceScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractFurnaceScreenMixin.java @@ -7,17 +7,17 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.world.AutoSmelter; -import net.minecraft.client.gui.screen.ingame.AbstractFurnaceScreen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.screen.AbstractFurnaceScreenHandler; -import net.minecraft.text.Text; +import net.minecraft.client.gui.screens.inventory.AbstractFurnaceScreen; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.screens.recipebook.RecipeUpdateListener; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.AbstractFurnaceMenu; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Mixin; @Mixin(AbstractFurnaceScreen.class) -public abstract class AbstractFurnaceScreenMixin extends HandledScreen implements RecipeBookProvider { - public AbstractFurnaceScreenMixin(T container, PlayerInventory playerInventory, Text name) { +public abstract class AbstractFurnaceScreenMixin extends AbstractContainerScreen implements RecipeUpdateListener { + public AbstractFurnaceScreenMixin(T container, Inventory playerInventory, Component name) { super(container, playerInventory, name); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MountScreenHandlerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractMountInventoryMenuAccessor.java similarity index 62% rename from src/main/java/meteordevelopment/meteorclient/mixin/MountScreenHandlerAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/AbstractMountInventoryMenuAccessor.java index 11acefa5a9..233c1e7653 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MountScreenHandlerAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractMountInventoryMenuAccessor.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.entity.LivingEntity; -import net.minecraft.screen.MountScreenHandler; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.inventory.AbstractMountInventoryMenu; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(MountScreenHandler.class) -public interface MountScreenHandlerAccessor { +@Mixin(AbstractMountInventoryMenu.class) +public interface AbstractMountInventoryMenuAccessor { @Accessor("mount") LivingEntity meteor$getMount(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignEditScreenAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignEditScreenAccessor.java index cc06eddcef..e2e8d9a9ce 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignEditScreenAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignEditScreenAccessor.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.block.entity.SignBlockEntity; -import net.minecraft.client.gui.screen.ingame.AbstractSignEditScreen; +import net.minecraft.world.level.block.entity.SignBlockEntity; +import net.minecraft.client.gui.screens.inventory.AbstractSignEditScreen; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(AbstractSignEditScreen.class) public interface AbstractSignEditScreenAccessor { - @Accessor("blockEntity") + @Accessor("sign") SignBlockEntity meteor$getSign(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignBlockEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignRendererMixin.java similarity index 67% rename from src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignBlockEntityRendererMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignRendererMixin.java index cde62a3298..57e8dbc39f 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignBlockEntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AbstractSignRendererMixin.java @@ -8,13 +8,13 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.render.block.entity.AbstractSignBlockEntityRenderer; +import net.minecraft.client.renderer.blockentity.AbstractSignRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(AbstractSignBlockEntityRenderer.class) -public abstract class AbstractSignBlockEntityRendererMixin { - @ModifyExpressionValue(method = "renderText", at = @At(value = "CONSTANT", args = {"intValue=4", "ordinal=1"})) +@Mixin(AbstractSignRenderer.class) +public abstract class AbstractSignRendererMixin { + @ModifyExpressionValue(method = "submitSignText", at = @At(value = "CONSTANT", args = {"intValue=4", "ordinal=1"})) private int loopTextLengthProxy(int i) { if (Modules.get().get(NoRender.class).noSignText()) return 0; return i; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ArmorFeatureRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ArmorFeatureRendererMixin.java deleted file mode 100644 index 80a9b53858..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ArmorFeatureRendererMixin.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.entity.feature.ArmorFeatureRenderer; -import net.minecraft.client.render.entity.model.BipedEntityModel; -import net.minecraft.client.render.entity.state.BipedEntityRenderState; -import net.minecraft.client.render.entity.state.PlayerEntityRenderState; -import net.minecraft.client.util.math.MatrixStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(ArmorFeatureRenderer.class) -public abstract class ArmorFeatureRendererMixin, A extends BipedEntityModel> { - @Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;ILnet/minecraft/client/render/entity/state/BipedEntityRenderState;FF)V", at = @At("HEAD"), cancellable = true) - private void onRender(MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, int i, S bipedEntityRenderState, float f, float g, CallbackInfo ci) { - if (bipedEntityRenderState instanceof PlayerEntityRenderState && Modules.get().get(NoRender.class).noArmor()) ci.cancel(); - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ArmorStandEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ArmorStandRendererMixin.java similarity index 61% rename from src/main/java/meteordevelopment/meteorclient/mixin/ArmorStandEntityRendererMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ArmorStandRendererMixin.java index 35bc339bf9..5ca0c339a3 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ArmorStandEntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ArmorStandRendererMixin.java @@ -8,19 +8,19 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.ESP; -import net.minecraft.client.render.entity.ArmorStandEntityRenderer; -import net.minecraft.entity.EntityType; +import net.minecraft.client.renderer.entity.ArmorStandRenderer; +import net.minecraft.world.entity.EntityType; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; -@Mixin(ArmorStandEntityRenderer.class) -public class ArmorStandEntityRendererMixin { +@Mixin(ArmorStandRenderer.class) +public class ArmorStandRendererMixin { @Unique private static ESP esp; - @ModifyExpressionValue(method = "getRenderLayer(Lnet/minecraft/client/render/entity/state/ArmorStandEntityRenderState;ZZZ)Lnet/minecraft/client/render/RenderLayer;", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/entity/state/ArmorStandEntityRenderState;marker:Z", opcode = Opcodes.GETFIELD)) + @ModifyExpressionValue(method = "getRenderType(Lnet/minecraft/client/renderer/entity/state/ArmorStandRenderState;ZZZ)Lnet/minecraft/client/renderer/rendertype/RenderType;", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/entity/state/ArmorStandRenderState;isMarker:Z", opcode = Opcodes.GETFIELD)) private boolean modifyMarkerValue(boolean original) { if (esp == null) esp = Modules.get().get(ESP.class); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AttackRangeComponentMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AttackRangeMixin.java similarity index 57% rename from src/main/java/meteordevelopment/meteorclient/mixin/AttackRangeComponentMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/AttackRangeMixin.java index e39095991f..e25fee519a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AttackRangeComponentMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AttackRangeMixin.java @@ -8,19 +8,19 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.combat.Hitboxes; -import net.minecraft.component.type.AttackRangeComponent; -import net.minecraft.entity.LivingEntity; -import net.minecraft.util.math.Vec3d; +import net.minecraft.world.item.component.AttackRange; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.phys.Vec3; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import java.util.function.ToDoubleFunction; -@Mixin(AttackRangeComponent.class) -public class AttackRangeComponentMixin { - @ModifyExpressionValue(method = "isWithinRange(Lnet/minecraft/entity/LivingEntity;Ljava/util/function/ToDoubleFunction;D)Z", at = @At(value = "FIELD", target = "Lnet/minecraft/component/type/AttackRangeComponent;hitboxMargin:F", opcode = Opcodes.GETFIELD)) - private float modifyHitboxMargin(float original, LivingEntity entity, ToDoubleFunction squaredDistanceFunction, double extraHitboxMargin) { +@Mixin(AttackRange.class) +public class AttackRangeMixin { + @ModifyExpressionValue(method = "isInRange(Lnet/minecraft/world/entity/LivingEntity;Ljava/util/function/ToDoubleFunction;D)Z", at = @At(value = "FIELD", target = "Lnet/minecraft/world/item/component/AttackRange;hitboxMargin:F", opcode = Opcodes.GETFIELD)) + private float modifyHitboxMargin(float original, LivingEntity entity, ToDoubleFunction squaredDistanceFunction, double extraHitboxMargin) { float v = (float) Modules.get().get(Hitboxes.class).getEntityValue(entity); return original + v; } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AvatarRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/AvatarRendererMixin.java new file mode 100644 index 0000000000..f1301afb27 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/AvatarRendererMixin.java @@ -0,0 +1,101 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import meteordevelopment.meteorclient.mixininterface.IVec3d; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.Chams; +import meteordevelopment.meteorclient.utils.player.Rotations; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.entity.ClientAvatarEntity; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.player.AvatarRenderer; +import net.minecraft.client.model.player.PlayerModel; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.world.entity.Avatar; +import net.minecraft.resources.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import static meteordevelopment.meteorclient.MeteorClient.mc; + +@Mixin(AvatarRenderer.class) +public abstract class AvatarRendererMixin + extends LivingEntityRenderer { + // Chams + + @Unique + private Chams chams; + + public AvatarRendererMixin(EntityRendererProvider.Context ctx, PlayerModel model, float shadowRadius) { + super(ctx, model, shadowRadius); + } + + @Inject(method = "", at = @At("RETURN")) + private void init$chams(CallbackInfo info) { + chams = Modules.get().get(Chams.class); + } + + // Chams - Player scale + + @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/Avatar;Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;F)V", at = @At("RETURN")) + private void updateRenderState$scale(AvatarlikeEntity player, AvatarRenderState state, float f, CallbackInfo ci) { + if (!chams.isActive() || !chams.players.get()) return; + if (chams.ignoreSelf.get() && player == mc.player) return; + + float v = chams.playersScale.get().floatValue(); + state.baseScale *= v; + + if (state.nameLabelPos != null) + ((IVec3d) state.nameLabelPos).meteor$setY(state.nameLabelPos.y + (player.getHeight() * v - player.getHeight())); + } + + // Chams - Hand Texture + + @ModifyExpressionValue(method = "renderHand", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/rendertype/RenderTypes;entityTranslucent(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/renderer/rendertype/RenderType;")) + private RenderType renderArm$texture(RenderType original, PoseStack matrixStack, SubmitNodeCollector entityRenderCommandQueue, int light, Identifier skinTexture, ModelPart modelPart, boolean sleeveVisible) { + if (chams.isActive() && chams.hand.get()) { + Identifier texture = chams.handTexture.get() ? skinTexture : Chams.BLANK; + return RenderTypes.entityTranslucent(texture); + } + + return original; + } + + // Chams - Hand Color + + @WrapWithCondition(method = "renderHand", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModelPart(Lnet/minecraft/client/model/geom/ModelPart;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;IILnet/minecraft/client/renderer/texture/TextureAtlasSprite;)V")) + private boolean renderArm$color(SubmitNodeCollector instance, ModelPart modelPart, PoseStack matrixStack, RenderType renderLayer, int light, int uv, TextureAtlasSprite sprite) { + if (chams.isActive() && chams.hand.get()) { + instance.submitModelPart(modelPart, matrixStack, renderLayer, light, uv, null, chams.handColor.get().getPacked(), null); + return false; + } + + return true; + } + + // Rotations + + @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/Avatar;Lnet/minecraft/client/renderer/entity/state/AvatarRenderState;F)V", at = @At("RETURN")) + private void updateRenderState$rotations(AvatarlikeEntity player, AvatarRenderState state, float f, CallbackInfo info) { + if (Rotations.rotating && player == mc.player) { + state.relativeHeadYaw = 0; + state.bodyYaw = Rotations.serverYaw; + state.pitch = Rotations.serverPitch; + } + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BannerBlockEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BannerBlockEntityRendererMixin.java deleted file mode 100644 index e6798c11da..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BannerBlockEntityRendererMixin.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.llamalad7.mixinextras.sugar.Local; -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.render.OverlayTexture; -import net.minecraft.client.render.RenderLayers; -import net.minecraft.client.render.block.entity.BannerBlockEntityRenderer; -import net.minecraft.client.render.block.entity.model.BannerBlockModel; -import net.minecraft.client.render.block.entity.state.BannerBlockEntityRenderState; -import net.minecraft.client.render.command.ModelCommandRenderer; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.model.ModelBaker; -import net.minecraft.client.render.state.CameraRenderState; -import net.minecraft.client.texture.SpriteHolder; -import net.minecraft.client.util.SpriteIdentifier; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.Unit; -import net.minecraft.util.math.RotationAxis; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(BannerBlockEntityRenderer.class) -public abstract class BannerBlockEntityRendererMixin { - @Shadow - @Final - private SpriteHolder materials; - - @Inject(method = "render(Lnet/minecraft/client/render/block/entity/state/BannerBlockEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/state/CameraRenderState;)V", at = @At("HEAD"), cancellable = true) - private void injectRender1(BannerBlockEntityRenderState bannerBlockEntityRenderState, MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { - if (Modules.get().get(NoRender.class).getBannerRenderMode() == NoRender.BannerRenderMode.None) ci.cancel(); - } - - @Inject(method = "render(Lnet/minecraft/client/render/block/entity/state/BannerBlockEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/block/entity/BannerBlockEntityRenderer;render(Lnet/minecraft/client/texture/SpriteHolder;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;IIFLnet/minecraft/client/render/block/entity/model/BannerBlockModel;Lnet/minecraft/client/render/block/entity/model/BannerFlagBlockModel;FLnet/minecraft/util/DyeColor;Lnet/minecraft/component/type/BannerPatternsComponent;Lnet/minecraft/client/render/command/ModelCommandRenderer$CrumblingOverlayCommand;I)V"), cancellable = true) - private void injectRender2(BannerBlockEntityRenderState bannerBlockEntityRenderState, MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, CameraRenderState cameraRenderState, CallbackInfo ci, @Local BannerBlockModel bannerBlockModel) { - if (Modules.get().get(NoRender.class).getBannerRenderMode() == NoRender.BannerRenderMode.Pillar) { - renderPillar( - matrixStack, - orderedRenderCommandQueue, - bannerBlockEntityRenderState.lightmapCoordinates, - bannerBlockEntityRenderState.yaw, - bannerBlockModel, - this.materials, - bannerBlockEntityRenderState.crumblingOverlay - ); - ci.cancel(); - } - } - - @Unique - private static void renderPillar(MatrixStack matrices, OrderedRenderCommandQueue entityRenderCommandQueue, int light, float rotation, BannerBlockModel model, SpriteHolder spriteHolder, ModelCommandRenderer.CrumblingOverlayCommand arg) { - matrices.push(); - matrices.translate(0.5F, 0.0F, 0.5F); - matrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(rotation)); - matrices.scale(0.6666667F, -0.6666667F, -0.6666667F); - SpriteIdentifier spriteIdentifier = ModelBaker.BANNER_BASE; - entityRenderCommandQueue.submitModel( - model, - Unit.INSTANCE, - matrices, - spriteIdentifier.getRenderLayer(RenderLayers::entitySolid), - light, - OverlayTexture.DEFAULT_UV, - -1, - spriteHolder.getSprite(spriteIdentifier), - 0, - arg - ); - matrices.pop(); - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BannerRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BannerRendererMixin.java new file mode 100644 index 0000000000..fafac9c63d --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BannerRendererMixin.java @@ -0,0 +1,81 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.sugar.Local; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.NoRender; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.blockentity.BannerRenderer; +import net.minecraft.client.model.object.banner.BannerModel; +import net.minecraft.client.renderer.blockentity.state.BannerRenderState; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.resources.model.ModelBakery; +import net.minecraft.client.renderer.state.CameraRenderState; +import net.minecraft.client.resources.model.MaterialSet; +import net.minecraft.client.resources.model.Material; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.util.Unit; +import com.mojang.math.Axis; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(BannerRenderer.class) +public abstract class BannerRendererMixin { + @Shadow + @Final + private MaterialSet materials; + + @Inject(method = "submit(Lnet/minecraft/client/renderer/blockentity/state/BannerRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At("HEAD"), cancellable = true) + private void injectRender1(BannerRenderState bannerBlockEntityRenderState, PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { + if (Modules.get().get(NoRender.class).getBannerRenderMode() == NoRender.BannerRenderMode.None) ci.cancel(); + } + + @Inject(method = "submit(Lnet/minecraft/client/renderer/blockentity/state/BannerRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/blockentity/BannerRenderer;submitBanner(Lnet/minecraft/client/resources/model/MaterialSet;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;IIFLnet/minecraft/client/model/object/banner/BannerModel;Lnet/minecraft/client/model/object/banner/BannerFlagModel;FLnet/minecraft/world/item/DyeColor;Lnet/minecraft/world/level/block/entity/BannerPatternLayers;Lnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;I)V"), cancellable = true) + private void injectRender2(BannerRenderState bannerBlockEntityRenderState, PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, CameraRenderState cameraRenderState, CallbackInfo ci, @Local BannerModel bannerBlockModel) { + if (Modules.get().get(NoRender.class).getBannerRenderMode() == NoRender.BannerRenderMode.Pillar) { + renderPillar( + matrixStack, + orderedRenderCommandQueue, + bannerBlockEntityRenderState.lightmapCoordinates, + bannerBlockEntityRenderState.yaw, + bannerBlockModel, + this.materials, + bannerBlockEntityRenderState.crumblingOverlay + ); + ci.cancel(); + } + } + + @Unique + private static void renderPillar(PoseStack matrices, SubmitNodeCollector entityRenderCommandQueue, int light, float rotation, BannerModel model, MaterialSet spriteHolder, ModelFeatureRenderer.CrumblingOverlay arg) { + matrices.push(); + matrices.translate(0.5F, 0.0F, 0.5F); + matrices.multiply(Axis.POSITIVE_Y.rotationDegrees(rotation)); + matrices.scale(0.6666667F, -0.6666667F, -0.6666667F); + Material spriteIdentifier = ModelBakery.BANNER_BASE; + entityRenderCommandQueue.submitModel( + model, + Unit.INSTANCE, + matrices, + spriteIdentifier.getRenderLayer(RenderTypes::entitySolid), + light, + OverlayTexture.DEFAULT_UV, + -1, + spriteHolder.getSprite(spriteIdentifier), + 0, + arg + ); + matrices.pop(); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BeaconBlockEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BeaconBlockEntityRendererMixin.java deleted file mode 100644 index 49e45c49db..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BeaconBlockEntityRendererMixin.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.block.entity.BeamEmitter; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.client.render.block.entity.BeaconBlockEntityRenderer; -import net.minecraft.client.render.block.entity.BlockEntityRenderer; -import net.minecraft.client.render.block.entity.state.BeaconBlockEntityRenderState; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.Identifier; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(BeaconBlockEntityRenderer.class) -public abstract class BeaconBlockEntityRendererMixin implements BlockEntityRenderer { - @Inject(method = "renderBeam(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/util/Identifier;FFIIIFF)V", at = @At("HEAD"), cancellable = true) - private static void onRender(MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, Identifier textureId, float tickProgress, float heightScale, int i, int j, int k, float f, float g, CallbackInfo ci) { - if (Modules.get().get(NoRender.class).noBeaconBeams()) ci.cancel(); - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BeaconRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BeaconRendererMixin.java new file mode 100644 index 0000000000..3c8798d372 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BeaconRendererMixin.java @@ -0,0 +1,29 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.NoRender; +import net.minecraft.world.level.block.entity.BeaconBeamOwner; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.client.renderer.blockentity.BeaconRenderer; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.blockentity.state.BeaconRenderState; +import net.minecraft.client.renderer.SubmitNodeCollector; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.resources.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(BeaconRenderer.class) +public abstract class BeaconRendererMixin implements BeaconRenderer { + @Inject(method = "submitBeaconBeam(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/resources/Identifier;FFIIIFF)V", at = @At("HEAD"), cancellable = true) + private static void onRender(PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, Identifier textureId, float tickProgress, float heightScale, int i, int j, int k, float f, float g, CallbackInfo ci) { + if (Modules.get().get(NoRender.class).noBeaconBeams()) ci.cancel(); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BeaconScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BeaconScreenMixin.java index 9f1e6046a6..a7f4d7ae17 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BeaconScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BeaconScreenMixin.java @@ -7,17 +7,17 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.BetterBeacons; -import net.minecraft.block.entity.BeaconBlockEntity; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.ingame.BeaconScreen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.client.gui.widget.ClickableWidget; -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.screen.BeaconScreenHandler; -import net.minecraft.text.Text; +import net.minecraft.world.level.block.entity.BeaconBlockEntity; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.inventory.BeaconScreen; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.gui.components.AbstractWidget; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.core.Holder; +import net.minecraft.world.inventory.BeaconMenu; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -28,31 +28,31 @@ import java.util.List; @Mixin(BeaconScreen.class) -public abstract class BeaconScreenMixin extends HandledScreen { +public abstract class BeaconScreenMixin extends AbstractContainerScreen { @Shadow - protected abstract void addButton(T button); + protected abstract void addBeaconButton(T button); - public BeaconScreenMixin(BeaconScreenHandler handler, PlayerInventory inventory, Text title) { + public BeaconScreenMixin(BeaconMenu handler, Inventory inventory, Component title) { super(handler, inventory, title); } @Inject(method = "init", at = @At(value = "INVOKE", target = "Ljava/util/List;clear()V", shift = At.Shift.AFTER), cancellable = true) private void changeButtons(CallbackInfo ci) { if (!Modules.get().get(BetterBeacons.class).isActive()) return; - List> effects = BeaconBlockEntity.EFFECTS_BY_LEVEL.stream().flatMap(Collection::stream).toList(); - if (MinecraftClient.getInstance().currentScreen instanceof BeaconScreen beaconScreen) { - addButton(beaconScreen.new DoneButtonWidget(this.x + 164, this.y + 107)); - addButton(beaconScreen.new CancelButtonWidget(this.x + 190, this.y + 107)); + List> effects = BeaconBlockEntity.EFFECTS_BY_LEVEL.stream().flatMap(Collection::stream).toList(); + if (Minecraft.getInstance().currentScreen instanceof BeaconScreen beaconScreen) { + addBeaconButton(beaconScreen.new DoneButtonWidget(this.x + 164, this.y + 107)); + addBeaconButton(beaconScreen.new CancelButtonWidget(this.x + 190, this.y + 107)); for (int x = 0; x < 3; x++) { for (int y = 0; y < 2; y++) { - RegistryEntry effect = effects.get(x * 2 + y); + Holder effect = effects.get(x * 2 + y); int xMin = this.x + x * 25; int yMin = this.y + y * 25; - addButton(beaconScreen.new EffectButtonWidget(xMin + 27, yMin + 32, effect, true, -1)); - BeaconScreen.EffectButtonWidget secondaryWidget = beaconScreen.new EffectButtonWidget(xMin + 133, yMin + 32, effect, false, 3); + addBeaconButton(beaconScreen.new EffectButtonWidget(xMin + 27, yMin + 32, effect, true, -1)); + BeaconScreen.BeaconPowerButton secondaryWidget = beaconScreen.new EffectButtonWidget(xMin + 133, yMin + 32, effect, false, 3); if (getScreenHandler().getProperties() != 4) secondaryWidget.active = false; - addButton(secondaryWidget); + addBeaconButton(secondaryWidget); } } } @@ -60,7 +60,7 @@ private void changeButtons(CallbackInfo ci) { } @Inject(method = "drawBackground", at = @At("TAIL")) - private void onDrawBackground(DrawContext context, float delta, int mouseX, int mouseY, CallbackInfo ci) { + private void onDrawBackground(GuiGraphics context, float delta, int mouseX, int mouseY, CallbackInfo ci) { if (!Modules.get().get(BetterBeacons.class).isActive()) return; //this will clear the background from useless pyramid graphics context.fill(x + 10, y + 7, x + 220, y + 98, 0xFF212121); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BiomeColorsMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BiomeColorsMixin.java index 2166d8690c..994a352212 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BiomeColorsMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BiomeColorsMixin.java @@ -7,9 +7,9 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.world.Ambience; -import net.minecraft.client.color.world.BiomeColors; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.BlockRenderView; +import net.minecraft.client.renderer.BiomeColors; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockAndTintGetter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -20,8 +20,8 @@ public abstract class BiomeColorsMixin { /** * @author Walaryne */ - @Inject(method = "getWaterColor", at = @At("HEAD"), cancellable = true) - private static void onGetWaterColor(BlockRenderView world, BlockPos pos, CallbackInfoReturnable info) { + @Inject(method = "getAverageWaterColor", at = @At("HEAD"), cancellable = true) + private static void onGetWaterColor(BlockAndTintGetter world, BlockPos pos, CallbackInfoReturnable info) { Ambience ambience = Modules.get().get(Ambience.class); if (ambience.isActive() && ambience.customWaterColor.get()) { @@ -32,8 +32,8 @@ private static void onGetWaterColor(BlockRenderView world, BlockPos pos, Callbac /** * @author Walaryne */ - @Inject(method = "getFoliageColor", at = @At("HEAD"), cancellable = true) - private static void onGetFoliageColor(BlockRenderView world, BlockPos pos, CallbackInfoReturnable info) { + @Inject(method = "getAverageFoliageColor", at = @At("HEAD"), cancellable = true) + private static void onGetFoliageColor(BlockAndTintGetter world, BlockPos pos, CallbackInfoReturnable info) { Ambience ambience = Modules.get().get(Ambience.class); if (ambience.isActive() && ambience.customFoliageColor.get()) { @@ -44,8 +44,8 @@ private static void onGetFoliageColor(BlockRenderView world, BlockPos pos, Callb /** * @author Walaryne */ - @Inject(method = "getGrassColor", at = @At("HEAD"), cancellable = true) - private static void onGetGrassColor(BlockRenderView world, BlockPos pos, CallbackInfoReturnable info) { + @Inject(method = "getAverageGrassColor", at = @At("HEAD"), cancellable = true) + private static void onGetGrassColor(BlockAndTintGetter world, BlockPos pos, CallbackInfoReturnable info) { Ambience ambience = Modules.get().get(Ambience.class); if (ambience.isActive() && ambience.customGrassColor.get()) { diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TextHandlerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockBehaviourAccessor.java similarity index 59% rename from src/main/java/meteordevelopment/meteorclient/mixin/TextHandlerAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/BlockBehaviourAccessor.java index 90394cdda4..c8a4de2af4 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/TextHandlerAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockBehaviourAccessor.java @@ -5,12 +5,12 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.font.TextHandler; +import net.minecraft.world.level.block.state.BlockBehaviour; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(TextHandler.class) -public interface TextHandlerAccessor { - @Accessor("widthRetriever") - TextHandler.WidthRetriever meteor$getWidthRetriever(); +@Mixin(BlockBehaviour.class) +public interface BlockBehaviourAccessor { + @Accessor("hasCollision") + boolean meteor$isHasCollision(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockBehaviourMixin.java similarity index 69% rename from src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/BlockBehaviourMixin.java index 089d557186..7d1ab7dfa2 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockBehaviourMixin.java @@ -9,25 +9,25 @@ import meteordevelopment.meteorclient.events.world.AmbientOcclusionEvent; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.BlockView; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(AbstractBlock.class) -public abstract class AbstractBlockMixin { - @Inject(method = "getAmbientOcclusionLightLevel", at = @At("HEAD"), cancellable = true) - private void onGetAmbientOcclusionLightLevel(BlockState state, BlockView world, BlockPos pos, CallbackInfoReturnable info) { +@Mixin(BlockBehaviour.class) +public abstract class BlockBehaviourMixin { + @Inject(method = "getShadeBrightness", at = @At("HEAD"), cancellable = true) + private void onGetAmbientOcclusionLightLevel(BlockState state, BlockGetter world, BlockPos pos, CallbackInfoReturnable info) { AmbientOcclusionEvent event = MeteorClient.EVENT_BUS.post(AmbientOcclusionEvent.get()); if (event.lightLevel != -1) info.setReturnValue(event.lightLevel); } - @Inject(method = "getRenderingSeed", at = @At("HEAD"), cancellable = true) + @Inject(method = "getSeed", at = @At("HEAD"), cancellable = true) private void onRenderingSeed(BlockState state, BlockPos pos, CallbackInfoReturnable cir) { if (Modules.get().get(NoRender.class).noTextureRotations()) cir.setReturnValue(0L); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockCollisionSpliteratorMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockCollisionSpliteratorMixin.java deleted file mode 100644 index 39048a1bd3..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockCollisionSpliteratorMixin.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; -import meteordevelopment.meteorclient.MeteorClient; -import meteordevelopment.meteorclient.events.world.CollisionShapeEvent; -import net.minecraft.block.BlockState; -import net.minecraft.block.ShapeContext; -import net.minecraft.client.MinecraftClient; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.shape.VoxelShape; -import net.minecraft.util.shape.VoxelShapes; -import net.minecraft.world.BlockCollisionSpliterator; -import net.minecraft.world.CollisionView; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(BlockCollisionSpliterator.class) -public abstract class BlockCollisionSpliteratorMixin { - @WrapOperation(method = "computeNext", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/block/ShapeContext;getCollisionShape(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/CollisionView;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/util/shape/VoxelShape;" - ) - ) - private VoxelShape onComputeNextCollisionBox(ShapeContext instance, BlockState blockState, CollisionView collisionView, BlockPos blockPos, Operation original) { - VoxelShape shape = original.call(instance, blockState, collisionView, blockPos); - - if (collisionView != MinecraftClient.getInstance().world) { - return shape; - } - - CollisionShapeEvent event = MeteorClient.EVENT_BUS.post(CollisionShapeEvent.get(blockState, blockPos, shape)); - return event.isCancelled() ? VoxelShapes.empty() : event.shape; - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockCollisionsMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockCollisionsMixin.java new file mode 100644 index 0000000000..1bd8350680 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockCollisionsMixin.java @@ -0,0 +1,41 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import meteordevelopment.meteorclient.MeteorClient; +import meteordevelopment.meteorclient.events.world.CollisionShapeEvent; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.client.Minecraft; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.level.BlockCollisions; +import net.minecraft.world.level.CollisionGetter; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(BlockCollisions.class) +public abstract class BlockCollisionsMixin { + @WrapOperation(method = "computeNext", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/phys/shapes/CollisionContext;getCollisionShape(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/CollisionGetter;Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/phys/shapes/VoxelShape;" + ) + ) + private VoxelShape onComputeNextCollisionBox(CollisionContext instance, BlockState blockState, CollisionGetter collisionView, BlockPos blockPos, Operation original) { + VoxelShape shape = original.call(instance, blockState, collisionView, blockPos); + + if (collisionView != Minecraft.getInstance().world) { + return shape; + } + + CollisionShapeEvent event = MeteorClient.EVENT_BUS.post(CollisionShapeEvent.get(blockState, blockPos, shape)); + return event.isCancelled() ? Shapes.empty() : event.shape; + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockColorsMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockColorsMixin.java index ede07e615e..6e7c8af41b 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockColorsMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockColorsMixin.java @@ -7,7 +7,7 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.world.Ambience; -import net.minecraft.client.color.block.BlockColorProvider; +import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.block.BlockColors; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -22,12 +22,12 @@ public abstract class BlockColorsMixin { method = "create", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/color/block/BlockColors;registerColorProvider(Lnet/minecraft/client/color/block/BlockColorProvider;[Lnet/minecraft/block/Block;)V", + target = "Lnet/minecraft/client/color/block/BlockColors;register(Lnet/minecraft/client/color/block/BlockColor;[Lnet/minecraft/world/level/block/Block;)V", ordinal = 3 ), index = 0 ) - private static BlockColorProvider modifySpruceLeavesColor(BlockColorProvider provider) { + private static BlockColor modifySpruceLeavesColor(BlockColor provider) { return (state, world, pos, tintIndex) -> getModifiedColor(-10380959); } @@ -35,12 +35,12 @@ private static BlockColorProvider modifySpruceLeavesColor(BlockColorProvider pro method = "create", at = @At( value = "INVOKE", - target = "Lnet/minecraft/client/color/block/BlockColors;registerColorProvider(Lnet/minecraft/client/color/block/BlockColorProvider;[Lnet/minecraft/block/Block;)V", + target = "Lnet/minecraft/client/color/block/BlockColors;register(Lnet/minecraft/client/color/block/BlockColor;[Lnet/minecraft/world/level/block/Block;)V", ordinal = 4 ), index = 0 ) - private static BlockColorProvider modifyBirchLeavesColor(BlockColorProvider provider) { + private static BlockColor modifyBirchLeavesColor(BlockColor provider) { return (state, world, pos, tintIndex) -> getModifiedColor(-8345771); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderManagerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderDispatcherAccessor.java similarity index 50% rename from src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderManagerAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderDispatcherAccessor.java index b582915859..46570f909a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderManagerAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderDispatcherAccessor.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.render.block.entity.BlockEntityRenderManager; -import net.minecraft.client.texture.SpriteHolder; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; +import net.minecraft.client.resources.model.MaterialSet; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(BlockEntityRenderManager.class) -public interface BlockEntityRenderManagerAccessor { - @Accessor("spriteHolder") - SpriteHolder getSpriteHolder(); +@Mixin(BlockEntityRenderDispatcher.class) +public interface BlockEntityRenderDispatcherAccessor { + @Accessor("materials") + MaterialSet getMaterials(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderManagerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderDispatcherMixin.java similarity index 56% rename from src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderManagerMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderDispatcherMixin.java index 4fc4ef95fc..bfc2b6b693 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderManagerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockEntityRenderDispatcherMixin.java @@ -7,20 +7,20 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.render.RenderBlockEntityEvent; -import net.minecraft.client.render.block.entity.BlockEntityRenderManager; -import net.minecraft.client.render.block.entity.state.BlockEntityRenderState; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.state.CameraRenderState; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; +import net.minecraft.client.renderer.blockentity.state.BlockEntityRenderState; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.state.CameraRenderState; +import com.mojang.blaze3d.vertex.PoseStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(BlockEntityRenderManager.class) -public abstract class BlockEntityRenderManagerMixin { - @Inject(method = "render", at = @At("HEAD"), cancellable = true) - private void onRenderEntity(S renderState, MatrixStack matrices, OrderedRenderCommandQueue queue, CameraRenderState arg, CallbackInfo ci) { +@Mixin(BlockEntityRenderDispatcher.class) +public abstract class BlockEntityRenderDispatcherMixin { + @Inject(method = "submit", at = @At("HEAD"), cancellable = true) + private void onRenderEntity(S renderState, PoseStack matrices, SubmitNodeCollector queue, CameraRenderState arg, CallbackInfo ci) { RenderBlockEntityEvent event = MeteorClient.EVENT_BUS.post(RenderBlockEntityEvent.get(renderState)); if (event.isCancelled()) ci.cancel(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockHitResultAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockHitResultAccessor.java index ecedfeaa65..5494848381 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockHitResultAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockHitResultAccessor.java @@ -5,8 +5,8 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.Direction; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.core.Direction; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; @@ -14,6 +14,6 @@ @Mixin(BlockHitResult.class) public interface BlockHitResultAccessor { @Mutable - @Accessor("side") - void meteor$setSide(Direction direction); + @Accessor("direction") + void meteor$setDirection(Direction direction); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockItemMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockItemMixin.java index 268c00db75..2ba2a5492e 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockItemMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockItemMixin.java @@ -9,9 +9,9 @@ import meteordevelopment.meteorclient.events.entity.player.PlaceBlockEvent; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.world.NoGhostBlocks; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemPlacementContext; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.context.BlockPlaceContext; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -22,10 +22,10 @@ @Mixin(BlockItem.class) public abstract class BlockItemMixin { @Shadow - protected abstract BlockState getPlacementState(ItemPlacementContext context); + protected abstract BlockState getPlacementState(BlockPlaceContext context); - @Inject(method = "place(Lnet/minecraft/item/ItemPlacementContext;Lnet/minecraft/block/BlockState;)Z", at = @At("HEAD"), cancellable = true) - private void onPlace(ItemPlacementContext context, BlockState state, CallbackInfoReturnable info) { + @Inject(method = "placeBlock(Lnet/minecraft/world/item/context/BlockPlaceContext;Lnet/minecraft/world/level/block/state/BlockState;)Z", at = @At("HEAD"), cancellable = true) + private void onPlace(BlockPlaceContext context, BlockState state, CallbackInfoReturnable info) { if (!context.getWorld().isClient()) return; if (MeteorClient.EVENT_BUS.post(PlaceBlockEvent.get(context.getBlockPos(), state.getBlock())).isCancelled()) { @@ -34,14 +34,14 @@ private void onPlace(ItemPlacementContext context, BlockState state, CallbackInf } @ModifyVariable( - method = "place(Lnet/minecraft/item/ItemPlacementContext;)Lnet/minecraft/util/ActionResult;", + method = "place(Lnet/minecraft/world/item/context/BlockPlaceContext;)Lnet/minecraft/world/InteractionResult;", ordinal = 1, at = @At( value = "INVOKE", - target = "Lnet/minecraft/block/BlockState;isOf(Lnet/minecraft/block/Block;)Z" + target = "Lnet/minecraft/world/level/block/state/BlockState;isOf(Lnet/minecraft/world/level/block/Block;)Z" ) ) - private BlockState modifyState(BlockState state, ItemPlacementContext context) { + private BlockState modifyState(BlockState state, BlockPlaceContext context) { var noGhostBlocks = Modules.get().get(NoGhostBlocks.class); if (noGhostBlocks.isActive() && noGhostBlocks.placing.get()) { diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockMixin.java index 119b58039f..a597b73405 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockMixin.java @@ -10,19 +10,19 @@ import meteordevelopment.meteorclient.systems.modules.movement.NoSlow; import meteordevelopment.meteorclient.systems.modules.movement.Slippy; import meteordevelopment.meteorclient.systems.modules.render.Xray; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.item.ItemConvertible; -import net.minecraft.util.math.Direction; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.ItemLike; +import net.minecraft.core.Direction; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(Block.class) -public abstract class BlockMixin extends AbstractBlock implements ItemConvertible { +@Mixin(BlockBehaviour.class) +public abstract class BlockMixin extends BlockBehaviour implements ItemLike { public BlockMixin(Settings settings) { super(settings); } @@ -33,7 +33,7 @@ public float getSlipperiness(float original) { if (Modules.get() == null) return original; Slippy slippy = Modules.get().get(Slippy.class); - Block block = (Block) (Object) this; + BlockBehaviour block = (BlockBehaviour) (Object) this; if (slippy.isActive() && (slippy.listMode.get() == Slippy.ListMode.Whitelist ? slippy.allowedBlocks.get().contains(block) : !slippy.ignoredBlocks.get().contains(block))) { return slippy.friction.get().floatValue(); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockRenderManagerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockRenderDispatcherMixin.java similarity index 53% rename from src/main/java/meteordevelopment/meteorclient/mixin/BlockRenderManagerMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/BlockRenderDispatcherMixin.java index 7e7fc2892a..de4d8b77aa 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockRenderManagerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockRenderDispatcherMixin.java @@ -8,21 +8,22 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.BreakIndicators; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.block.BlockRenderManager; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.BlockRenderView; +import net.minecraft.world.level.block.state.BlockState; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.block.BlockRenderDispatcher; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockAndTintGetter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(BlockRenderManager.class) -public abstract class BlockRenderManagerMixin { - @Inject(method = "renderDamage", at = @At("HEAD"), cancellable = true) - private void renderDamage(BlockState state, BlockPos pos, BlockRenderView world, MatrixStack matrix, VertexConsumer vertexConsumer, CallbackInfo info) { - if (Modules.get().isActive(BreakIndicators.class) || Modules.get().get(NoRender.class).noBlockBreakOverlay()) info.cancel(); +@Mixin(BlockRenderDispatcher.class) +public abstract class BlockRenderDispatcherMixin { + @Inject(method = "renderBreakingTexture", at = @At("HEAD"), cancellable = true) + private void renderDamage(BlockState state, BlockPos pos, BlockAndTintGetter world, PoseStack matrix, VertexConsumer vertexConsumer, CallbackInfo info) { + if (Modules.get().isActive(BreakIndicators.class) || Modules.get().get(NoRender.class).noBlockBreakOverlay()) + info.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockStateMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BlockStateMixin.java index 353f279c9c..4ec310535f 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockStateMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BlockStateMixin.java @@ -9,24 +9,24 @@ import it.unimi.dsi.fastutil.objects.Reference2ObjectArrayMap; import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.world.BlockActivateEvent; -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.state.property.Property; -import net.minecraft.util.ActionResult; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.world.World; +import net.minecraft.world.level.block.state.BlockBehaviour; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.properties.Property; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; @Mixin(BlockState.class) -public abstract class BlockStateMixin extends AbstractBlock.AbstractBlockState { - public BlockStateMixin(Block block, Reference2ObjectArrayMap, Comparable> propertyMap, MapCodec mapCodec) { +public abstract class BlockStateMixin extends BlockBehaviour.BlockStateBase { + public BlockStateMixin(BlockBehaviour block, Reference2ObjectArrayMap, Comparable> propertyMap, MapCodec mapCodec) { super(block, propertyMap, mapCodec); } @Override - public ActionResult onUse(World world, PlayerEntity player, BlockHitResult hit) { + public InteractionResult onUse(Level world, Player player, BlockHitResult hit) { MeteorClient.EVENT_BUS.post(BlockActivateEvent.get((BlockState) (Object) this)); return super.onUse(world, player, hit); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BookEditScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BookEditScreenMixin.java index 1b6eeab7c1..c065caecbc 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BookEditScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BookEditScreenMixin.java @@ -6,11 +6,11 @@ package meteordevelopment.meteorclient.mixin; import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.BookEditScreen; -import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.BookEditScreen; +import net.minecraft.client.gui.components.Button; import net.minecraft.nbt.*; -import net.minecraft.text.Text; +import net.minecraft.network.chat.Component; import org.lwjgl.glfw.GLFW; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -30,80 +30,83 @@ @Mixin(BookEditScreen.class) public abstract class BookEditScreenMixin extends Screen { - @Shadow @Final private List pages; - @Shadow private int currentPage; + @Shadow + @Final + private List pages; + @Shadow + private int currentPage; @Shadow - protected abstract void updatePage(); + protected abstract void updatePageContent(); - public BookEditScreenMixin(Text title) { + public BookEditScreenMixin(Component title) { super(title); } @Inject(method = "init", at = @At("TAIL")) private void onInit(CallbackInfo info) { addDrawableChild( - new ButtonWidget.Builder(Text.literal("Copy"), button -> { + new Button.Builder(Component.literal("Copy"), button -> { NbtList listTag = new NbtList(); - pages.stream().map(NbtString::of).forEach(listTag::add); - - NbtCompound tag = new NbtCompound(); - tag.put("pages", listTag); - tag.putInt("currentPage", currentPage); - - FastByteArrayOutputStream bytes = new FastByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(bytes); - try { - NbtIo.write(tag, out); - } catch (IOException e) { - e.printStackTrace(); - } - - try { - GLFW.glfwSetClipboardString(mc.getWindow().getHandle(), Base64.getEncoder().encodeToString(bytes.array)); - } catch (OutOfMemoryError exception) { - GLFW.glfwSetClipboardString(mc.getWindow().getHandle(), exception.toString()); - } - }) + pages.stream().map(NbtString::of).forEach(listTag::add); + + NbtCompound tag = new NbtCompound(); + tag.put("pages", listTag); + tag.putInt("currentPage", currentPage); + + FastByteArrayOutputStream bytes = new FastByteArrayOutputStream(); + DataOutputStream out = new DataOutputStream(bytes); + try { + NbtIo.write(tag, out); + } catch (IOException e) { + e.printStackTrace(); + } + + try { + GLFW.glfwSetClipboardString(mc.getWindow().getHandle(), Base64.getEncoder().encodeToString(bytes.array)); + } catch (OutOfMemoryError exception) { + GLFW.glfwSetClipboardString(mc.getWindow().getHandle(), exception.toString()); + } + }) .position(4, 4) .size(120, 20) .build() ); addDrawableChild( - new ButtonWidget.Builder(Text.literal("Paste"), button -> { - String clipboard = GLFW.glfwGetClipboardString(mc.getWindow().getHandle()); - if (clipboard == null) return; - - byte[] bytes; - try { - bytes = Base64.getDecoder().decode(clipboard); - } catch (IllegalArgumentException ignored) { - return; + new Button.Builder(Component.literal("Paste"), button -> { + String clipboard = GLFW.glfwGetClipboardString(mc.getWindow().getHandle()); + if (clipboard == null) return; + + byte[] bytes; + try { + bytes = Base64.getDecoder().decode(clipboard); + } catch (IllegalArgumentException ignored) { + return; + } + DataInputStream in = new DataInputStream(new ByteArrayInputStream(bytes)); + + try { + NbtCompound tag = NbtIo.readCompressed(in, NbtSizeTracker.ofUnlimitedBytes()); + + NbtList listTag = tag.getListOrEmpty("pages").copy(); + + pages.clear(); + for (int i = 0; i < listTag.size(); ++i) { + pages.add(listTag.getString(i, "")); } - DataInputStream in = new DataInputStream(new ByteArrayInputStream(bytes)); - try { - NbtCompound tag = NbtIo.readCompressed(in, NbtSizeTracker.ofUnlimitedBytes()); - - NbtList listTag = tag.getListOrEmpty("pages").copy(); - - pages.clear(); - for(int i = 0; i < listTag.size(); ++i) { - pages.add(listTag.getString(i, "")); - } - - if (pages.isEmpty()) { - pages.add(""); - } + if (pages.isEmpty()) { + pages.add(""); + } - currentPage = tag.getInt("currentPage", 0); + currentPage = tag.getInt("currentPage", 0); - updatePage(); - } catch (IOException e) { - e.printStackTrace(); - } - }) + updatePageContent(); + } catch (IOException e) { + e.printStackTrace(); + } + }) .position(4, 4 + 20 + 2) .size(120, 20) .build() diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BookScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BookScreenMixin.java deleted file mode 100644 index 4da1997a8a..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BookScreenMixin.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream; -import meteordevelopment.meteorclient.gui.GuiThemes; -import meteordevelopment.meteorclient.gui.screens.EditBookTitleAndAuthorScreen; -import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.ingame.BookScreen; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtIo; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.text.Text; -import net.minecraft.util.Hand; -import org.lwjgl.glfw.GLFW; -import org.lwjgl.system.MemoryStack; -import org.lwjgl.system.MemoryUtil; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.io.DataOutputStream; -import java.io.IOException; -import java.util.Base64; - -import static meteordevelopment.meteorclient.MeteorClient.mc; - -@Mixin(BookScreen.class) -public abstract class BookScreenMixin extends Screen { - @Shadow - private BookScreen.Contents contents; - - @Shadow - private int pageIndex; - - public BookScreenMixin(Text title) { - super(title); - } - - @Inject(method = "init", at = @At("TAIL")) - private void onInit(CallbackInfo info) { - addDrawableChild( - new ButtonWidget.Builder(Text.literal("Copy"), button -> { - NbtList listTag = new NbtList(); - for (int i = 0; i < contents.getPageCount(); i++) listTag.add(NbtString.of(contents.getPage(i).getString())); - - NbtCompound tag = new NbtCompound(); - tag.put("pages", listTag); - tag.putInt("currentPage", pageIndex); - - FastByteArrayOutputStream bytes = new FastByteArrayOutputStream(); - DataOutputStream out = new DataOutputStream(bytes); - try { - NbtIo.write(tag, out); - } catch (IOException e) { - e.printStackTrace(); - } - - String encoded = Base64.getEncoder().encodeToString(bytes.array); - - @SuppressWarnings("resource") - long available = MemoryStack.stackGet().getPointer(); - long size = MemoryUtil.memLengthUTF8(encoded, true); - - if (size > available) { - ChatUtils.error("Could not copy to clipboard: Out of memory."); - } else { - GLFW.glfwSetClipboardString(mc.getWindow().getHandle(), encoded); - } - }) - .position(4, 4) - .size(120, 20) - .build() - ); - - // Edit title & author - ItemStack itemStack = mc.player.getMainHandStack(); - Hand hand = Hand.MAIN_HAND; - - if (itemStack.getItem() != Items.WRITTEN_BOOK) { - itemStack = mc.player.getOffHandStack(); - hand = Hand.OFF_HAND; - } - if (itemStack.getItem() != Items.WRITTEN_BOOK) return; - - ItemStack book = itemStack; // Fuck you Java - Hand hand2 = hand; // Honestly - - addDrawableChild( - new ButtonWidget.Builder(Text.literal("Edit title & author"), button -> { - mc.setScreen(new EditBookTitleAndAuthorScreen(GuiThemes.get(), book, hand2)); - }) - .position(4, 4 + 20 + 2) - .size(120, 20) - .build() - ); - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BookViewScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BookViewScreenMixin.java new file mode 100644 index 0000000000..96b06168f5 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BookViewScreenMixin.java @@ -0,0 +1,109 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import it.unimi.dsi.fastutil.io.FastByteArrayOutputStream; +import meteordevelopment.meteorclient.gui.GuiThemes; +import meteordevelopment.meteorclient.gui.screens.EditBookTitleAndAuthorScreen; +import meteordevelopment.meteorclient.utils.player.ChatUtils; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.BookViewScreen; +import net.minecraft.client.gui.components.Button; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtIo; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionHand; +import org.lwjgl.glfw.GLFW; +import org.lwjgl.system.MemoryStack; +import org.lwjgl.system.MemoryUtil; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.Base64; + +import static meteordevelopment.meteorclient.MeteorClient.mc; + +@Mixin(BookViewScreen.class) +public abstract class BookViewScreenMixin extends Screen { + @Shadow + private BookViewScreen.BookAccess bookAccess; + + @Shadow + private int currentPage; + + public BookViewScreenMixin(Component title) { + super(title); + } + + @Inject(method = "init", at = @At("TAIL")) + private void onInit(CallbackInfo info) { + addDrawableChild( + new Button.Builder(Component.literal("Copy"), button -> { + ListTag listTag = new NbtList(); + for (int i = 0; i < bookAccess.getPageCount(); i++) + listTag.add(StringTag.of(bookAccess.getPage(i).getString())); + + CompoundTag tag = new NbtCompound(); + tag.put("pages", listTag); + tag.putInt("currentPage", currentPage); + + FastByteArrayOutputStream bytes = new FastByteArrayOutputStream(); + DataOutputStream out = new DataOutputStream(bytes); + try { + NbtIo.write(tag, out); + } catch (IOException e) { + e.printStackTrace(); + } + + String encoded = Base64.getEncoder().encodeToString(bytes.array); + + @SuppressWarnings("resource") + long available = MemoryStack.stackGet().getPointer(); + long size = MemoryUtil.memLengthUTF8(encoded, true); + + if (size > available) { + ChatUtils.error("Could not copy to clipboard: Out of memory."); + } else { + GLFW.glfwSetClipboardString(mc.getWindow().getHandle(), encoded); + } + }) + .position(4, 4) + .size(120, 20) + .build() + ); + + // Edit title & author + ItemStack itemStack = mc.player.getMainHandStack(); + InteractionHand hand = InteractionHand.MAIN_HAND; + + if (itemStack.getItem() != Items.WRITTEN_BOOK) { + itemStack = mc.player.getOffHandStack(); + hand = InteractionHand.OFF_HAND; + } + if (itemStack.getItem() != Items.WRITTEN_BOOK) return; + + ItemStack book = itemStack; // Fuck you Java + InteractionHand hand2 = hand; // Honestly + + addDrawableChild( + new Button.Builder(Component.literal("Edit title & author"), button -> { + mc.setScreen(new EditBookTitleAndAuthorScreen(GuiThemes.get(), book, hand2)); + }) + .position(4, 4 + 20 + 2) + .size(120, 20) + .build() + ); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BossBarHudMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BossHealthOverlayMixin.java similarity index 77% rename from src/main/java/meteordevelopment/meteorclient/mixin/BossBarHudMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/BossHealthOverlayMixin.java index 4535bdc5eb..2c8781e7e0 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BossBarHudMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BossHealthOverlayMixin.java @@ -11,9 +11,9 @@ import meteordevelopment.meteorclient.events.render.RenderBossBarEvent; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.gui.hud.BossBarHud; -import net.minecraft.client.gui.hud.ClientBossBar; -import net.minecraft.text.Text; +import net.minecraft.client.gui.components.BossHealthOverlay; +import net.minecraft.client.gui.components.LerpingBossEvent; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Constant; @@ -23,21 +23,21 @@ import java.util.Iterator; -@Mixin(BossBarHud.class) -public abstract class BossBarHudMixin { +@Mixin(BossHealthOverlay.class) +public abstract class BossHealthOverlayMixin { @Inject(method = "render", at = @At("HEAD"), cancellable = true) private void onRender(CallbackInfo info) { if (Modules.get().get(NoRender.class).noBossBar()) info.cancel(); } @ModifyExpressionValue(method = "render", at = @At(value = "INVOKE", target = "Ljava/util/Collection;iterator()Ljava/util/Iterator;")) - public Iterator modifyBossBarIterator(Iterator original) { + public Iterator modifyBossBarIterator(Iterator original) { RenderBossBarEvent.BossIterator event = MeteorClient.EVENT_BUS.post(RenderBossBarEvent.BossIterator.get(original)); return event.iterator; } - @ModifyExpressionValue(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ClientBossBar;getName()Lnet/minecraft/text/Text;")) - public Text modifyBossBarName(Text original, @Local ClientBossBar clientBossBar) { + @ModifyExpressionValue(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/LerpingBossEvent;getName()Lnet/minecraft/network/chat/Component;")) + public Component modifyBossBarName(Component original, @Local LerpingBossEvent clientBossBar) { RenderBossBarEvent.BossText event = MeteorClient.EVENT_BUS.post(RenderBossBarEvent.BossText.get(clientBossBar, original)); return event.name; } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BoxMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BoxMixin.java index 2bf35405fe..2608aa0ebb 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BoxMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BoxMixin.java @@ -6,21 +6,53 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.IBox; -import net.minecraft.util.math.Box; +import net.minecraft.world.phys.AABB; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Shadow; +// TODO(Ravel): can not resolve target class Box +// TODO(Ravel): can not resolve target class Box @Mixin(Box.class) public abstract class BoxMixin implements IBox { - @Shadow @Final @Mutable public double minX; - @Shadow @Final @Mutable public double minY; - @Shadow @Final @Mutable public double minZ; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + public double minX; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + public double minY; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + public double minZ; - @Shadow @Final @Mutable public double maxX; - @Shadow @Final @Mutable public double maxY; - @Shadow @Final @Mutable public double maxZ; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + public double maxX; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + public double maxY; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + public double maxZ; @Override public void meteor$expand(double v) { diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BrewingStandScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BrewingStandScreenMixin.java index d055b97e8c..f9bc96ae6d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BrewingStandScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BrewingStandScreenMixin.java @@ -7,16 +7,16 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.world.AutoBrewer; -import net.minecraft.client.gui.screen.ingame.BrewingStandScreen; -import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.screen.BrewingStandScreenHandler; -import net.minecraft.text.Text; +import net.minecraft.client.gui.screens.inventory.BrewingStandScreen; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.inventory.BrewingStandMenu; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Mixin; @Mixin(BrewingStandScreen.class) -public abstract class BrewingStandScreenMixin extends HandledScreen { - public BrewingStandScreenMixin(BrewingStandScreenHandler container, PlayerInventory playerInventory, Text name) { +public abstract class BrewingStandScreenMixin extends AbstractContainerScreen { + public BrewingStandScreenMixin(BrewingStandMenu container, Inventory playerInventory, Component name) { super(container, playerInventory, name); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BrightnessGetterMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BrightnessGetterMixin.java index 403a846e00..218e420ae1 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BrightnessGetterMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BrightnessGetterMixin.java @@ -7,22 +7,22 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.Fullbright; -import net.minecraft.client.render.WorldRenderer; -import net.minecraft.world.LightType; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.world.level.LightLayer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; -@Mixin(WorldRenderer.BrightnessGetter.class) +@Mixin(LevelRenderer.BrightnessGetter.class) public interface BrightnessGetterMixin { - @ModifyVariable(method = "method_68890", at = @At(value = "STORE"), ordinal = 0) + @ModifyVariable(method = "lambda$static$0", at = @At(value = "STORE"), ordinal = 0) private static int getLightmapCoordinatesModifySkyLight(int sky) { - return Math.max(Modules.get().get(Fullbright.class).getLuminance(LightType.SKY), sky); + return Math.max(Modules.get().get(Fullbright.class).getLuminance(LightLayer.SKY), sky); } - @ModifyVariable(method = "method_68890", at = @At(value = "STORE"), ordinal = 1) + @ModifyVariable(method = "lambda$static$0", at = @At(value = "STORE"), ordinal = 1) private static int getLightmapCoordinatesModifyBlockLight(int sky) { - return Math.max(Modules.get().get(Fullbright.class).getLuminance(LightType.BLOCK), sky); + return Math.max(Modules.get().get(Fullbright.class).getLuminance(LightLayer.BLOCK), sky); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/RegistriesMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BuiltInRegistriesMixin.java similarity index 50% rename from src/main/java/meteordevelopment/meteorclient/mixin/RegistriesMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/BuiltInRegistriesMixin.java index 090c49ad6c..29c3198577 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/RegistriesMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BuiltInRegistriesMixin.java @@ -5,16 +5,16 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.registry.Registries; +import net.minecraft.core.registries.BuiltInRegistries; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; import java.util.function.Supplier; -@Mixin(Registries.class) -public abstract class RegistriesMixin { - @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")) +@Mixin(BuiltInRegistries.class) +public abstract class BuiltInRegistriesMixin { + @Redirect(method = "internalRegister(Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/core/WritableRegistry;Lnet/minecraft/core/registries/BuiltInRegistries$RegistryBootstrap;)Lnet/minecraft/core/WritableRegistry;", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/Bootstrap;checkBootstrapCalled(Ljava/util/function/Supplier;)V")) private static void ignoreBootstrap(Supplier callerGetter) { // nothing } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BundleItemMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BundleItemMixin.java index 15fa22b4f2..33ad06bc3d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BundleItemMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BundleItemMixin.java @@ -7,9 +7,9 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.render.TooltipDataEvent; -import net.minecraft.item.BundleItem; -import net.minecraft.item.ItemStack; -import net.minecraft.item.tooltip.TooltipData; +import net.minecraft.world.item.BundleItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.tooltip.TooltipComponent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -20,7 +20,7 @@ @Mixin(BundleItem.class) public class BundleItemMixin { @Inject(method = "getTooltipData", at = @At("HEAD"), cancellable = true) - private void onTooltipData(ItemStack stack, CallbackInfoReturnable> cir) { + private void onTooltipData(ItemStack stack, CallbackInfoReturnable> cir) { TooltipDataEvent event = MeteorClient.EVENT_BUS.post(TooltipDataEvent.get(stack)); if (event.tooltipData != null) { cir.setReturnValue(Optional.of(event.tooltipData)); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BundleTooltipSubmenuHandlerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/BundleMouseActionsMixin.java similarity index 54% rename from src/main/java/meteordevelopment/meteorclient/mixin/BundleTooltipSubmenuHandlerMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/BundleMouseActionsMixin.java index 8c3a7183f6..5c7d10f82b 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BundleTooltipSubmenuHandlerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/BundleMouseActionsMixin.java @@ -8,24 +8,26 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.InventoryTweaks; -import net.minecraft.client.gui.tooltip.BundleTooltipSubmenuHandler; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.BundleContentsComponent; -import net.minecraft.item.ItemStack; +import net.minecraft.client.gui.BundleMouseActions; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.component.BundleContents; +import net.minecraft.world.item.ItemStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(BundleTooltipSubmenuHandler.class) -public class BundleTooltipSubmenuHandlerMixin { - @ModifyExpressionValue(method = "sendPacket", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/BundleItem;getNumberOfStacksShown(Lnet/minecraft/item/ItemStack;)I")) +@Mixin(BundleMouseActions.class) +public class BundleMouseActionsMixin { + @ModifyExpressionValue(method = "toggleSelectedBundleItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/BundleItem;getNumberOfItemsToShow(Lnet/minecraft/world/item/ItemStack;)I")) private int uncapBundleScrolling1(int original, ItemStack item, int slotId, int selectedItemIndex) { - if (Modules.get().get(InventoryTweaks.class).uncapBundleScrolling()) return item.getOrDefault(DataComponentTypes.BUNDLE_CONTENTS, BundleContentsComponent.DEFAULT).size(); + if (Modules.get().get(InventoryTweaks.class).uncapBundleScrolling()) + return item.getOrDefault(DataComponents.BUNDLE_CONTENTS, BundleContents.DEFAULT).size(); return original; } - @ModifyExpressionValue(method = "onScroll", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/BundleItem;getNumberOfStacksShown(Lnet/minecraft/item/ItemStack;)I")) + @ModifyExpressionValue(method = "onScroll", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/BundleItem;getNumberOfItemsToShow(Lnet/minecraft/world/item/ItemStack;)I")) private int uncapBundleScrolling2(int original, double horizontal, double vertical, int slotId, ItemStack item) { - if (Modules.get().get(InventoryTweaks.class).uncapBundleScrolling()) return item.getOrDefault(DataComponentTypes.BUNDLE_CONTENTS, BundleContentsComponent.DEFAULT).size(); + if (Modules.get().get(InventoryTweaks.class).uncapBundleScrolling()) + return item.getOrDefault(DataComponents.BUNDLE_CONTENTS, BundleContents.DEFAULT).size(); return original; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ProjectionMatrix2Accessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/CachedOrthoProjectionMatrixBufferAccessor.java similarity index 52% rename from src/main/java/meteordevelopment/meteorclient/mixin/ProjectionMatrix2Accessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/CachedOrthoProjectionMatrixBufferAccessor.java index 325bf337bc..4466dc6346 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ProjectionMatrix2Accessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CachedOrthoProjectionMatrixBufferAccessor.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.render.ProjectionMatrix2; +import net.minecraft.client.renderer.CachedOrthoProjectionMatrixBuffer; import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(ProjectionMatrix2.class) -public interface ProjectionMatrix2Accessor { - @Invoker("getMatrix") - Matrix4f meteor$callGetMatrix(float width, float height); +@Mixin(CachedOrthoProjectionMatrixBuffer.class) +public interface CachedOrthoProjectionMatrixBufferAccessor { + @Invoker("createProjectionMatrix") + Matrix4f meteor$callCreateProjectionMatrix(float width, float height); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/CameraMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/CameraMixin.java index 6a7a278f51..b6ab167c82 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/CameraMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CameraMixin.java @@ -13,11 +13,11 @@ import meteordevelopment.meteorclient.systems.modules.render.Freecam; import meteordevelopment.meteorclient.systems.modules.render.NoRender; import meteordevelopment.meteorclient.systems.modules.world.HighwayBuilder; -import net.minecraft.block.enums.CameraSubmersionType; -import net.minecraft.client.render.Camera; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; +import net.minecraft.world.level.material.FogType; +import net.minecraft.client.Camera; +import net.minecraft.world.entity.Entity; +import net.minecraft.util.Mth; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -28,20 +28,38 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.invoke.arg.Args; +// TODO(Ravel): can not resolve target class net.minecraft.client.Camera +// TODO(Ravel): can not resolve target class Camera @Mixin(Camera.class) public abstract class CameraMixin implements ICamera { - @Shadow private boolean thirdPerson; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + private boolean thirdPerson; - @Shadow private float yaw; - @Shadow private float pitch; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + private float yaw; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + private float pitch; - @Shadow protected abstract void setRotation(float yaw, float pitch); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + protected abstract void setRotation(float yaw, float pitch); + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "getSubmersionType", at = @At("HEAD"), cancellable = true) - private void getSubmergedFluidState(CallbackInfoReturnable ci) { - if (Modules.get().get(NoRender.class).noLiquidOverlay()) ci.setReturnValue(CameraSubmersionType.NONE); + private void getSubmergedFluidState(CallbackInfoReturnable ci) { + if (Modules.get().get(NoRender.class).noLiquidOverlay()) ci.setReturnValue(FogType.NONE); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyVariable(method = "clipToSpace", at = @At("HEAD"), ordinal = 0, argsOnly = true) private float modifyClipToSpace(float d) { if (Modules.get().get(Freecam.class).isActive()) return 0; @@ -50,6 +68,8 @@ private float modifyClipToSpace(float d) { return cameraTweaks.isActive() ? (float) cameraTweaks.distance : d; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "clipToSpace", at = @At("HEAD"), cancellable = true) private void onClipToSpace(float desiredCameraDistance, CallbackInfoReturnable info) { if (Modules.get().get(CameraTweaks.class).clip()) { @@ -57,14 +77,18 @@ private void onClipToSpace(float desiredCameraDistance, CallbackInfoReturnable meteor$getTrimmedMessages(); + + @Accessor("allMessages") + List meteor$getAllMessages(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudAccessor.java deleted file mode 100644 index 5361dc6782..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudAccessor.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.client.gui.hud.ChatHud; -import net.minecraft.client.gui.hud.ChatHudLine; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.List; - -@Mixin(ChatHud.class) -public interface ChatHudAccessor { - @Accessor("visibleMessages") - List meteor$getVisibleMessages(); - - @Accessor("messages") - List meteor$getMessages(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudInteractableMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudInteractableMixin.java index fbb740ef4b..eb6af8c922 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudInteractableMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudInteractableMixin.java @@ -8,11 +8,11 @@ import com.llamalad7.mixinextras.injector.ModifyReceiver; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.BetterChat; -import net.minecraft.client.font.Alignment; -import net.minecraft.client.font.DrawnTextConsumer; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.text.OrderedText; -import net.minecraft.util.math.ColorHelper; +import net.minecraft.client.gui.TextAlignment; +import net.minecraft.client.gui.ActiveTextCollector; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.util.FormattedCharSequence; +import net.minecraft.util.ARGB; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -22,28 +22,28 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(targets = "net.minecraft.client.gui.hud.ChatHud$Interactable", remap = false) +@Mixin(targets = "net.minecraft.client.gui.components.ChatComponent$DrawingFocusedGraphicsAccess", remap = false) public class ChatHudInteractableMixin { @Unique private static BetterChat betterChat; @Shadow @Final - private DrawContext context; + private GuiGraphics graphics; - @ModifyReceiver(method = "text", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/DrawnTextConsumer;text(Lnet/minecraft/client/font/Alignment;IILnet/minecraft/client/font/DrawnTextConsumer$Transformation;Lnet/minecraft/text/OrderedText;)V")) - private DrawnTextConsumer onRender_beforeDrawTextWithShadow(DrawnTextConsumer instance, Alignment alignment, int x, int y, DrawnTextConsumer.Transformation transformation, OrderedText orderedText) { - getBetterChat().beforeDrawMessage(context, y, ColorHelper.getWhite(transformation.opacity())); + @ModifyReceiver(method = "text", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/ActiveTextCollector;accept(Lnet/minecraft/client/gui/TextAlignment;IILnet/minecraft/client/gui/ActiveTextCollector$Parameters;Lnet/minecraft/util/FormattedCharSequence;)V")) + private ActiveTextCollector onRender_beforeDrawTextWithShadow(ActiveTextCollector instance, TextAlignment alignment, int x, int y, ActiveTextCollector.Parameters transformation, FormattedCharSequence orderedText) { + getBetterChat().beforeDrawMessage(graphics, y, ARGB.getWhite(transformation.opacity())); return instance; } - @ModifyArg(method = "text", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/DrawnTextConsumer;text(Lnet/minecraft/client/font/Alignment;IILnet/minecraft/client/font/DrawnTextConsumer$Transformation;Lnet/minecraft/text/OrderedText;)V"), index = 1) + @ModifyArg(method = "text", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/ActiveTextCollector;accept(Lnet/minecraft/client/gui/TextAlignment;IILnet/minecraft/client/gui/ActiveTextCollector$Parameters;Lnet/minecraft/util/FormattedCharSequence;)V"), index = 1) private int modifyX(int x) { return getBetterChat().modifyChatWidth(x); } @Inject(method = "text", at = @At("TAIL")) - private void onRender_afterDrawTextWithShadow(int y, float f, OrderedText text, CallbackInfoReturnable cir) { + private void onRender_afterDrawTextWithShadow(int y, float f, FormattedCharSequence text, CallbackInfoReturnable cir) { getBetterChat().afterDrawMessage(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineConsumerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineConsumerMixin.java index 05def0ce96..596964f10a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineConsumerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineConsumerMixin.java @@ -9,24 +9,24 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.BetterChat; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.gui.hud.ChatHudLine; -import net.minecraft.client.gui.hud.MessageIndicator; +import net.minecraft.client.GuiMessage; +import net.minecraft.client.GuiMessageTag; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(targets = "net.minecraft.client.gui.hud.ChatHud$1", remap = false) +@Mixin(targets = "net.minecraft.client.gui.components.ChatComponent$1", remap = false) public class ChatHudLineConsumerMixin { // Player Heads, also draw immediately when line is set @Inject(method = "accept", at = @At("HEAD")) - private void setLine(ChatHudLine.Visible visible, int i, float f, CallbackInfo ci) { + private void setLine(GuiMessage.Line visible, int i, float f, CallbackInfo ci) { Modules.get().get(BetterChat.class).line = visible; } // No Message Signature Indicator - @ModifyExpressionValue(method = "accept", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHudLine$Visible;indicator()Lnet/minecraft/client/gui/hud/MessageIndicator;")) - private MessageIndicator onRender_modifyIndicator(MessageIndicator indicator) { + @ModifyExpressionValue(method = "accept", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/GuiMessage$Line;tag()Lnet/minecraft/client/GuiMessageTag;")) + private GuiMessageTag onRender_modifyIndicator(GuiMessageTag indicator) { return Modules.get().get(NoRender.class).noMessageSignatureIndicator() ? null : indicator; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineMixin.java index 60b9b5fff6..5e702c9b8a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineMixin.java @@ -7,18 +7,26 @@ import com.mojang.authlib.GameProfile; import meteordevelopment.meteorclient.mixininterface.IChatHudLine; -import net.minecraft.client.gui.hud.ChatHudLine; -import net.minecraft.text.Text; +import net.minecraft.client.GuiMessage; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; +// TODO(Ravel): can not resolve target class ChatHudLine +// TODO(Ravel): can not resolve target class ChatHudLine @Mixin(value = ChatHudLine.class) public abstract class ChatHudLineMixin implements IChatHudLine { - @Shadow @Final private Text content; - @Unique private int id; - @Unique private GameProfile sender; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + private Component content; + @Unique + private int id; + @Unique + private GameProfile sender; @Override public String meteor$getText() { diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineVisibleMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineVisibleMixin.java index c616b282ec..22b7fd5527 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineVisibleMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudLineVisibleMixin.java @@ -7,19 +7,24 @@ import com.mojang.authlib.GameProfile; import meteordevelopment.meteorclient.mixininterface.IChatHudLineVisible; -import net.minecraft.client.gui.hud.ChatHudLine; -import net.minecraft.text.OrderedText; +import net.minecraft.client.GuiMessage; +import net.minecraft.util.FormattedCharSequence; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; -@Mixin(ChatHudLine.Visible.class) +@Mixin(GuiMessage.Line.class) public abstract class ChatHudLineVisibleMixin implements IChatHudLineVisible { - @Shadow @Final private OrderedText content; - @Unique private int id; - @Unique private GameProfile sender; - @Unique private boolean startOfEntry; + @Shadow + @Final + private FormattedCharSequence content; + @Unique + private int id; + @Unique + private GameProfile sender; + @Unique + private boolean startOfEntry; @Override public String meteor$getText() { diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudMixin.java index 764a39ef9b..bba2df00e4 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudMixin.java @@ -16,13 +16,13 @@ import meteordevelopment.meteorclient.mixininterface.IMessageHandler; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.BetterChat; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.hud.ChatHud; -import net.minecraft.client.gui.hud.ChatHudLine; -import net.minecraft.client.gui.hud.MessageIndicator; -import net.minecraft.network.message.MessageSignatureData; -import net.minecraft.text.OrderedText; -import net.minecraft.text.Text; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.components.ChatComponent; +import net.minecraft.client.GuiMessage; +import net.minecraft.client.GuiMessageTag; +import net.minecraft.network.chat.MessageSignature; +import net.minecraft.util.FormattedCharSequence; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -33,14 +33,22 @@ import java.util.List; +// TODO(Ravel): can not resolve target class ChatHud +// TODO(Ravel): can not resolve target class ChatHud @Mixin(ChatHud.class) public abstract class ChatHudMixin implements IChatHud { + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final - MinecraftClient client; + Minecraft client; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final private List visibleMessages; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final private List messages; @@ -50,28 +58,36 @@ public abstract class ChatHudMixin implements IChatHud { @Unique private int nextId; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow - public abstract void addMessage(Text message); + public abstract void addMessage(FormattedCharSequence message); @Override - public void meteor$add(Text message, int id) { + public void meteor$add(FormattedCharSequence message, int id) { nextId = id; addMessage(message); nextId = 0; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "addVisibleMessage", at = @At(value = "INVOKE", target = "Ljava/util/List;addFirst(Ljava/lang/Object;)V", shift = At.Shift.AFTER)) private void onAddMessageAfterNewChatHudLineVisible(ChatHudLine message, CallbackInfo ci) { ((IChatHudLine) (Object) visibleMessages.getFirst()).meteor$setId(nextId); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "addMessage(Lnet/minecraft/client/gui/hud/ChatHudLine;)V", at = @At(value = "INVOKE", target = "Ljava/util/List;addFirst(Ljava/lang/Object;)V", shift = At.Shift.AFTER)) private void onAddMessageAfterNewChatHudLine(ChatHudLine message, CallbackInfo ci) { ((IChatHudLine) (Object) messages.getFirst()).meteor$setId(nextId); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @SuppressWarnings("DataFlowIssue") - @ModifyExpressionValue(method = "addVisibleMessage", at = @At(value = "NEW", target = "(ILnet/minecraft/text/OrderedText;Lnet/minecraft/client/gui/hud/MessageIndicator;Z)Lnet/minecraft/client/gui/hud/ChatHudLine$Visible;")) + @ModifyExpressionValue(method = "addVisibleMessage", at = @At(value = "NEW", target = "(ILnet/minecraft/util/FormattedCharSequence;Lnet/minecraft/client/GuiMessageTag;Z)Lnet/minecraft/client/GuiMessage$Line;")) private ChatHudLine.Visible onAddMessage_modifyChatHudLineVisible(ChatHudLine.Visible line, @SuppressWarnings("LocalMayBeArgsOnly") @Local(ordinal = 1) int j) { IMessageHandler handler = (IMessageHandler) client.getMessageHandler(); if (handler == null) return line; @@ -84,7 +100,9 @@ private ChatHudLine.Visible onAddMessage_modifyChatHudLineVisible(ChatHudLine.Vi return line; } - @ModifyExpressionValue(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;Lnet/minecraft/client/gui/hud/MessageIndicator;)V", at = @At(value = "NEW", target = "(ILnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;Lnet/minecraft/client/gui/hud/MessageIndicator;)Lnet/minecraft/client/gui/hud/ChatHudLine;")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;Lnet/minecraft/client/gui/hud/MessageIndicator;)V", at = @At(value = "NEW", target = "(ILnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/GuiMessageTag;)Lnet/minecraft/client/GuiMessage;")) private ChatHudLine onAddMessage_modifyChatHudLine(ChatHudLine line) { IMessageHandler handler = (IMessageHandler) client.getMessageHandler(); if (handler == null) return line; @@ -93,8 +111,10 @@ private ChatHudLine onAddMessage_modifyChatHudLine(ChatHudLine line) { return line; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(at = @At("HEAD"), method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;Lnet/minecraft/client/gui/hud/MessageIndicator;)V", cancellable = true) - private void onAddMessage(Text message, MessageSignatureData signatureData, MessageIndicator indicator, CallbackInfo ci, @Local(argsOnly = true) LocalRef messageRef, @Local(argsOnly = true) LocalRef indicatorRef) { + private void onAddMessage(FormattedCharSequence message, MessageSignature signatureData, GuiMessageTag indicator, CallbackInfo ci, @Local(argsOnly = true) LocalRef messageRef, @Local(argsOnly = true) LocalRef indicatorRef) { ReceiveMessageEvent event = MeteorClient.EVENT_BUS.post(ReceiveMessageEvent.get(message, indicator, nextId)); if (event.isCancelled()) ci.cancel(); @@ -115,7 +135,9 @@ private void onAddMessage(Text message, MessageSignatureData signatureData, Mess } } - //modify max lengths for messages and visible messages + // TODO(Ravel): no target class +// TODO(Ravel): no target class +//modify max lengths for messages and visible messages @ModifyExpressionValue(method = "addMessage(Lnet/minecraft/client/gui/hud/ChatHudLine;)V", at = @At(value = "CONSTANT", args = "intValue=100")) private int maxLength(int size) { if (Modules.get() == null || !getBetterChat().isLongerChat()) return size; @@ -123,6 +145,8 @@ private int maxLength(int size) { return size + betterChat.getExtraChatLines(); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyExpressionValue(method = "addVisibleMessage", at = @At(value = "CONSTANT", args = "intValue=100")) private int maxLengthVisible(int size) { if (Modules.get() == null || !getBetterChat().isLongerChat()) return size; @@ -132,20 +156,26 @@ private int maxLengthVisible(int size) { // Player Heads - @ModifyExpressionValue(method = "render(Lnet/minecraft/client/gui/hud/ChatHud$Backend;IIZ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;ceil(F)I")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "render(Lnet/minecraft/client/gui/hud/ChatHud$Backend;IIZ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Mth;ceil(F)I")) private int onRender_modifyWidth(int width) { return getBetterChat().modifyChatWidth(width); } // Anti spam - @Inject(method = "addVisibleMessage", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;isChatFocused()Z")) - private void onBreakChatMessageLines(ChatHudLine message, CallbackInfo ci, @Local List list) { + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Inject(method = "addVisibleMessage", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/ChatComponent;isChatFocused()Z")) + private void onBreakChatMessageLines(ChatHudLine message, CallbackInfo ci, @Local List list) { if (Modules.get() == null) return; // baritone calls addMessage before we initialise getBetterChat().lines.addFirst(list.size()); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "addMessage(Lnet/minecraft/client/gui/hud/ChatHudLine;)V", at = @At(value = "INVOKE", target = "Ljava/util/List;removeLast()Ljava/lang/Object;")) private void onRemoveMessage(ChatHudLine message, CallbackInfo ci) { if (Modules.get() == null) return; @@ -159,11 +189,15 @@ private void onRemoveMessage(ChatHudLine message, CallbackInfo ci) { } } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "clear", at = @At("HEAD")) private void onClear(boolean clearHistory, CallbackInfo ci) { getBetterChat().lines.clear(); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "refresh", at = @At("HEAD")) private void onRefresh(CallbackInfo ci) { getBetterChat().lines.clear(); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudUnfocusedMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudUnfocusedMixin.java index 59877b3ad9..c1b13f23dd 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudUnfocusedMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ChatHudUnfocusedMixin.java @@ -8,12 +8,12 @@ import com.llamalad7.mixinextras.injector.ModifyReceiver; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.BetterChat; -import net.minecraft.client.font.Alignment; -import net.minecraft.client.font.DrawnTextConsumer; -import net.minecraft.client.font.DrawnTextConsumer.Transformation; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.text.OrderedText; -import net.minecraft.util.math.ColorHelper; +import net.minecraft.client.gui.TextAlignment; +import net.minecraft.client.gui.ActiveTextCollector; +import net.minecraft.client.gui.ActiveTextCollector.Parameters; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.util.FormattedCharSequence; +import net.minecraft.util.ARGB; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -23,31 +23,31 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(targets = "net.minecraft.client.gui.hud.ChatHud$Hud", remap = false) +@Mixin(targets = "net.minecraft.client.gui.components.ChatComponent$DrawingBackgroundGraphicsAccess", remap = false) public class ChatHudUnfocusedMixin { @Unique private static BetterChat betterChat; @Final @Shadow - private DrawContext context; + private GuiGraphics graphics; // Offset text to make room for player heads - @ModifyArg(method = "text", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/DrawnTextConsumer;text(Lnet/minecraft/client/font/Alignment;IILnet/minecraft/client/font/DrawnTextConsumer$Transformation;Lnet/minecraft/text/OrderedText;)V"), index = 1) + @ModifyArg(method = "text", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/ActiveTextCollector;accept(Lnet/minecraft/client/gui/TextAlignment;IILnet/minecraft/client/gui/ActiveTextCollector$Parameters;Lnet/minecraft/util/FormattedCharSequence;)V"), index = 1) private int modifyX(int x) { return getBetterChat().modifyChatWidth(x); } // Player Heads for unfocused chat - draw before text - @ModifyReceiver(method = "text", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/DrawnTextConsumer;text(Lnet/minecraft/client/font/Alignment;IILnet/minecraft/client/font/DrawnTextConsumer$Transformation;Lnet/minecraft/text/OrderedText;)V")) - private DrawnTextConsumer onRender_beforeDrawText(DrawnTextConsumer instance, Alignment alignment, int x, int y, Transformation transformation, OrderedText orderedText) { - getBetterChat().beforeDrawMessage(context, y, ColorHelper.getWhite(transformation.opacity())); + @ModifyReceiver(method = "text", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/ActiveTextCollector;accept(Lnet/minecraft/client/gui/TextAlignment;IILnet/minecraft/client/gui/ActiveTextCollector$Parameters;Lnet/minecraft/util/FormattedCharSequence;)V")) + private ActiveTextCollector onRender_beforeDrawText(ActiveTextCollector instance, TextAlignment alignment, int x, int y, Parameters transformation, FormattedCharSequence orderedText) { + getBetterChat().beforeDrawMessage(graphics, y, ARGB.getWhite(transformation.opacity())); return instance; } // Clean up after drawing @Inject(method = "text", at = @At("TAIL")) - private void onRender_afterDrawText(int y, float f, OrderedText orderedText, CallbackInfoReturnable cir) { + private void onRender_afterDrawText(int y, float f, FormattedCharSequence orderedText, CallbackInfoReturnable cir) { getBetterChat().afterDrawMessage(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChatScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChatScreenMixin.java index 379cfb8868..959f8dedbe 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChatScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ChatScreenMixin.java @@ -7,8 +7,8 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.BetterChat; -import net.minecraft.client.gui.screen.ChatScreen; -import net.minecraft.client.gui.widget.TextFieldWidget; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.gui.components.EditBox; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -17,10 +17,11 @@ @Mixin(value = ChatScreen.class, priority = 1001) public abstract class ChatScreenMixin { - @Shadow protected TextFieldWidget chatField; + @Shadow + protected EditBox input; @Inject(method = "init", at = @At(value = "RETURN")) private void onInit(CallbackInfo info) { - if (Modules.get().get(BetterChat.class).isInfiniteChatBox()) chatField.setMaxLength(Integer.MAX_VALUE); + if (Modules.get().get(BetterChat.class).isInfiniteChatBox()) input.setMaxLength(Integer.MAX_VALUE); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChunkAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChunkAccessAccessor.java similarity index 65% rename from src/main/java/meteordevelopment/meteorclient/mixin/ChunkAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ChunkAccessAccessor.java index b342187b13..293f8595cf 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChunkAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ChunkAccessAccessor.java @@ -5,16 +5,16 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.chunk.ChunkAccess; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import java.util.Map; -@Mixin(Chunk.class) -public interface ChunkAccessor { +@Mixin(ChunkAccess.class) +public interface ChunkAccessAccessor { @Accessor("blockEntities") Map getBlockEntities(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChunkBorderDebugRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChunkBorderDebugRendererMixin.java deleted file mode 100644 index ac5ece18cf..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChunkBorderDebugRendererMixin.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.render.Freecam; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.debug.ChunkBorderDebugRenderer; -import net.minecraft.util.math.ChunkSectionPos; -import net.minecraft.util.math.MathHelper; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(ChunkBorderDebugRenderer.class) -public abstract class ChunkBorderDebugRendererMixin { - @Shadow - @Final - private MinecraftClient client; - - @ModifyExpressionValue(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/ChunkSectionPos;from(Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/util/math/ChunkSectionPos;")) - private ChunkSectionPos render$getChunkPos(ChunkSectionPos original) { - Freecam freecam = Modules.get().get(Freecam.class); - if (!freecam.isActive()) return original; - - float delta = client.getRenderTickCounter().getTickProgress(true); - - return ChunkSectionPos.from( - ChunkSectionPos.getSectionCoord(MathHelper.floor(freecam.getX(delta))), - ChunkSectionPos.getSectionCoord(MathHelper.floor(freecam.getY(delta))), - ChunkSectionPos.getSectionCoord(MathHelper.floor(freecam.getZ(delta))) - ); - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChunkBorderRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ChunkBorderRendererMixin.java new file mode 100644 index 0000000000..ed60ed461d --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ChunkBorderRendererMixin.java @@ -0,0 +1,39 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.Freecam; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.debug.ChunkBorderRenderer; +import net.minecraft.core.SectionPos; +import net.minecraft.util.Mth; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(ChunkBorderRenderer.class) +public abstract class ChunkBorderRendererMixin { + @Shadow + @Final + private Minecraft minecraft; + + @ModifyExpressionValue(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/SectionPos;of(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/core/SectionPos;")) + private SectionPos render$getChunkPos(SectionPos original) { + Freecam freecam = Modules.get().get(Freecam.class); + if (!freecam.isActive()) return original; + + float delta = minecraft.getRenderTickCounter().getTickProgress(true); + + return SectionPos.from( + SectionPos.getSectionCoord(Mth.floor(freecam.getX(delta))), + SectionPos.getSectionCoord(Mth.floor(freecam.getY(delta))), + SectionPos.getSectionCoord(Mth.floor(freecam.getZ(delta))) + ); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkCacheAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkCacheAccessor.java new file mode 100644 index 0000000000..74e61bb10a --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkCacheAccessor.java @@ -0,0 +1,16 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.client.multiplayer.ClientChunkCache; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ClientChunkCache.class) +public interface ClientChunkCacheAccessor { + @Accessor("storage") + ClientChunkCache.Storage meteor$getStorage(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkMapAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkMapAccessor.java index 5051de03d3..89c41bbff8 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkMapAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkMapAccessor.java @@ -5,15 +5,15 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.world.ClientChunkManager; -import net.minecraft.world.chunk.WorldChunk; +import net.minecraft.client.multiplayer.ClientChunkCache; +import net.minecraft.world.level.chunk.LevelChunk; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import java.util.concurrent.atomic.AtomicReferenceArray; -@Mixin(ClientChunkManager.ClientChunkMap.class) +@Mixin(ClientChunkCache.Storage.class) public interface ClientChunkMapAccessor { @Accessor("chunks") - AtomicReferenceArray meteor$getChunks(); + AtomicReferenceArray meteor$getChunks(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientWorldMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientLevelMixin.java similarity index 68% rename from src/main/java/meteordevelopment/meteorclient/mixin/ClientWorldMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ClientLevelMixin.java index 0b958b055c..469605fbfa 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientWorldMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientLevelMixin.java @@ -10,12 +10,12 @@ import meteordevelopment.meteorclient.events.entity.EntityRemovedEvent; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -25,9 +25,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.invoke.arg.Args; -@Mixin(ClientWorld.class) -public abstract class ClientWorldMixin { - @Shadow @Nullable public abstract Entity getEntityById(int id); +@Mixin(ClientLevel.class) +public abstract class ClientLevelMixin { + @Shadow + @Nullable + public abstract Entity getEntityById(int id); @Inject(method = "addEntity", at = @At("TAIL")) private void onAddEntity(Entity entity, CallbackInfo info) { @@ -36,10 +38,11 @@ private void onAddEntity(Entity entity, CallbackInfo info) { @Inject(method = "removeEntity", at = @At("HEAD")) private void onRemoveEntity(int entityId, Entity.RemovalReason removalReason, CallbackInfo info) { - if (getEntityById(entityId) != null) MeteorClient.EVENT_BUS.post(EntityRemovedEvent.get(getEntityById(entityId))); + if (getEntityById(entityId) != null) + MeteorClient.EVENT_BUS.post(EntityRemovedEvent.get(getEntityById(entityId))); } - @ModifyArgs(method = "doRandomBlockDisplayTicks", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;randomBlockDisplayTick(IIIILnet/minecraft/util/math/random/Random;Lnet/minecraft/block/Block;Lnet/minecraft/util/math/BlockPos$Mutable;)V")) + @ModifyArgs(method = "animateTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientLevel;doAnimateTick(IIIILnet/minecraft/util/RandomSource;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/core/BlockPos$MutableBlockPos;)V")) private void doRandomBlockDisplayTicks(Args args) { if (Modules.get().get(NoRender.class).noBarrierInvis()) { args.set(5, Blocks.BARRIER); @@ -51,7 +54,7 @@ private void onAddBlockBreakParticles(BlockPos blockPos, BlockState state, Callb if (Modules.get().get(NoRender.class).noBlockBreakParticles()) info.cancel(); } - @Inject(method = "spawnBlockBreakingParticle", at = @At("HEAD"), cancellable = true) + @Inject(method = "addBreakingBlockEffect", at = @At("HEAD"), cancellable = true) private void onAddBlockBreakingParticles(BlockPos blockPos, Direction direction, CallbackInfo info) { if (Modules.get().get(NoRender.class).noBlockBreakParticles()) info.cancel(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPacketListenerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPacketListenerAccessor.java new file mode 100644 index 0000000000..c8fbb4be2d --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPacketListenerAccessor.java @@ -0,0 +1,39 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.client.multiplayer.ClientSuggestionProvider; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.network.chat.LastSeenMessagesTracker; +import net.minecraft.network.chat.SignedMessageChain; +import net.minecraft.network.protocol.game.ClientboundCommandsPacket; +import net.minecraft.core.RegistryAccess; +import net.minecraft.world.flag.FeatureFlagSet; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ClientPacketListener.class) +public interface ClientPacketListenerAccessor { + @Accessor("serverChunkRadius") + int meteor$getServerChunkRadius(); + + @Accessor("signedMessageEncoder") + SignedMessageChain.Encoder meteor$getSignedMessageEncoder(); + + @Accessor("lastSeenMessages") + LastSeenMessagesTracker meteor$getLastSeenMessages(); + + @Accessor("registryAccess") + RegistryAccess.Frozen meteor$getRegistryAccess(); + + @Accessor("enabledFeatures") + FeatureFlagSet meteor$getEnabledFeatures(); + + @Accessor("COMMAND_NODE_BUILDER") + static ClientboundCommandsPacket.NodeBuilder meteor$getCommandNodeFactory() { + return null; + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerAccessor.java deleted file mode 100644 index 688c432a5f..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerAccessor.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.client.network.ClientCommandSource; -import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.network.message.LastSeenMessagesCollector; -import net.minecraft.network.message.MessageChain; -import net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket; -import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.resource.featuretoggle.FeatureSet; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ClientPlayNetworkHandler.class) -public interface ClientPlayNetworkHandlerAccessor { - @Accessor("chunkLoadDistance") - int meteor$getChunkLoadDistance(); - - @Accessor("messagePacker") - MessageChain.Packer meteor$getMessagePacker(); - - @Accessor("lastSeenMessagesCollector") - LastSeenMessagesCollector meteor$getLastSeenMessagesCollector(); - - @Accessor("combinedDynamicRegistries") - DynamicRegistryManager.Immutable meteor$getCombinedDynamicRegistries(); - - @Accessor("enabledFeatures") - FeatureSet meteor$getEnabledFeatures(); - - @Accessor("COMMAND_NODE_FACTORY") - static CommandTreeS2CPacket.NodeFactory meteor$getCommandNodeFactory() { - return null; - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerMixin.java index e11fde6217..b77d143b7d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayNetworkHandlerMixin.java @@ -1,3 +1,4 @@ +// TODO(Ravel): Failed to fully resolve file: null cannot be cast to non-null type com.intellij.psi.PsiClass /* * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). * Copyright (c) Meteor Development. @@ -30,17 +31,17 @@ import meteordevelopment.meteorclient.systems.modules.player.NoRotate; import meteordevelopment.meteorclient.systems.modules.render.NoRender; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.ClientCommonNetworkHandler; -import net.minecraft.client.network.ClientConnectionState; -import net.minecraft.client.network.ClientPlayNetworkHandler; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.ItemEntity; -import net.minecraft.network.ClientConnection; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientCommonPacketListenerImpl; +import net.minecraft.client.multiplayer.CommonListenerCookie; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.network.Connection; import net.minecraft.network.packet.s2c.play.*; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.chunk.WorldChunk; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.chunk.LevelChunk; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -48,12 +49,12 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ClientPlayNetworkHandler.class) -public abstract class ClientPlayNetworkHandlerMixin extends ClientCommonNetworkHandler { +@Mixin(ClientPacketListener.class) +public abstract class ClientPacketListenerMixin extends ClientCommonPacketListenerImpl { @Shadow - private ClientWorld world; + private ClientLevel level; - protected ClientPlayNetworkHandlerMixin(MinecraftClient client, ClientConnection connection, ClientConnectionState connectionState) { + protected ClientPacketListenerMixin(Minecraft client, Connection connection, CommonListenerCookie connectionState) { super(client, connection, connectionState); } @@ -81,7 +82,7 @@ private void onGameJoinTail(GameJoinS2CPacket packet, CallbackInfo info, @Share( } // the server sends a GameJoin packet after the reconfiguration phase - @Inject(method = "onEnterReconfiguration", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/NetworkThreadUtils;forceMainThread(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/listener/PacketListener;Lnet/minecraft/network/PacketApplyBatcher;)V", shift = At.Shift.AFTER)) + @Inject(method = "onEnterReconfiguration", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V", shift = At.Shift.AFTER)) private void onEnterReconfiguration(EnterReconfigurationS2CPacket packet, CallbackInfo info) { MeteorClient.EVENT_BUS.post(GameLeftEvent.get()); } @@ -93,7 +94,7 @@ private void onPlaySound(PlaySoundS2CPacket packet, CallbackInfo info) { @Inject(method = "onChunkData", at = @At("TAIL")) private void onChunkData(ChunkDataS2CPacket packet, CallbackInfo info) { - WorldChunk chunk = client.world.getChunk(packet.getChunkX(), packet.getChunkZ()); + LevelChunk chunk = client.world.getChunk(packet.getChunkX(), packet.getChunkZ()); MeteorClient.EVENT_BUS.post(new ChunkDataEvent(chunk)); } @@ -107,25 +108,25 @@ private void onInventory(InventoryS2CPacket packet, CallbackInfo info) { MeteorClient.EVENT_BUS.post(InventoryEvent.get(packet)); } - @Inject(method = "onEntitiesDestroy", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/EntitiesDestroyS2CPacket;getEntityIds()Lit/unimi/dsi/fastutil/ints/IntList;")) + @Inject(method = "onEntitiesDestroy", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/game/ClientboundRemoveEntitiesPacket;getEntityIds()Lit/unimi/dsi/fastutil/ints/IntList;")) private void onEntitiesDestroy(EntitiesDestroyS2CPacket packet, CallbackInfo ci) { for (int id : packet.getEntityIds()) { MeteorClient.EVENT_BUS.post(EntityDestroyEvent.get(client.world.getEntityById(id))); } } - @Inject(method = "onExplosion", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/NetworkThreadUtils;forceMainThread(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/listener/PacketListener;Lnet/minecraft/network/PacketApplyBatcher;)V", shift = At.Shift.AFTER)) + @Inject(method = "onExplosion", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/PacketUtils;ensureRunningOnSameThread(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;Lnet/minecraft/network/PacketProcessor;)V", shift = At.Shift.AFTER)) private void onExplosionVelocity(ExplosionS2CPacket packet, CallbackInfo ci) { Velocity velocity = Modules.get().get(Velocity.class); if (!velocity.explosions.get()) return; IExplosionS2CPacket explosionPacket = (IExplosionS2CPacket) (Object) packet; - explosionPacket.meteor$setVelocityX((float) (packet.playerKnockback().orElse(Vec3d.ZERO).x * velocity.getHorizontal(velocity.explosionsHorizontal))); - explosionPacket.meteor$setVelocityY((float) (packet.playerKnockback().orElse(Vec3d.ZERO).y * velocity.getVertical(velocity.explosionsVertical))); - explosionPacket.meteor$setVelocityZ((float) (packet.playerKnockback().orElse(Vec3d.ZERO).z * velocity.getHorizontal(velocity.explosionsHorizontal))); + explosionPacket.meteor$setVelocityX((float) (packet.playerKnockback().orElse(Vec3.ZERO).x * velocity.getHorizontal(velocity.explosionsHorizontal))); + explosionPacket.meteor$setVelocityY((float) (packet.playerKnockback().orElse(Vec3.ZERO).y * velocity.getVertical(velocity.explosionsVertical))); + explosionPacket.meteor$setVelocityZ((float) (packet.playerKnockback().orElse(Vec3.ZERO).z * velocity.getHorizontal(velocity.explosionsHorizontal))); } - @Inject(method = "onItemPickupAnimation", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;getEntityById(I)Lnet/minecraft/entity/Entity;", ordinal = 0)) + @Inject(method = "onItemPickupAnimation", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientLevel;getEntityById(I)Lnet/minecraft/world/entity/Entity;", ordinal = 0)) private void onItemPickupAnimation(ItemPickupAnimationS2CPacket packet, CallbackInfo info) { Entity itemEntity = client.world.getEntityById(packet.getEntityId()); Entity entity = client.world.getEntityById(packet.getCollectorEntityId()); @@ -137,8 +138,8 @@ private void onItemPickupAnimation(ItemPickupAnimationS2CPacket packet, Callback @Inject(method = "onPlayerPositionLook", at = @At("HEAD")) private void onPlayerPositionLookHead(PlayerPositionLookS2CPacket packet, CallbackInfo ci, - @Share("noRotateYaw") LocalFloatRef yawRef, - @Share("noRotatePitch") LocalFloatRef pitchRef) { + @Share("noRotateYaw") LocalFloatRef yawRef, + @Share("noRotatePitch") LocalFloatRef pitchRef) { NoRotate noRotate = Modules.get().get(NoRotate.class); if (!noRotate.isActive() || client.player == null) return; @@ -148,8 +149,8 @@ private void onPlayerPositionLookHead(PlayerPositionLookS2CPacket packet, Callba @Inject(method = "onPlayerPositionLook", at = @At("RETURN")) private void onPlayerPositionLookReturn(PlayerPositionLookS2CPacket packet, CallbackInfo ci, - @Share("noRotateYaw") LocalFloatRef yawRef, - @Share("noRotatePitch") LocalFloatRef pitchRef) { + @Share("noRotateYaw") LocalFloatRef yawRef, + @Share("noRotatePitch") LocalFloatRef pitchRef) { NoRotate noRotate = Modules.get().get(NoRotate.class); if (!noRotate.isActive() || client.player == null) return; @@ -163,7 +164,7 @@ private void onPlayerPositionLookReturn(PlayerPositionLookS2CPacket packet, Call client.player.bodyYaw = savedYaw; } - @Inject(method = "sendChatMessage", at = @At("HEAD"), cancellable = true) + @Inject(method = "sendChat", at = @At("HEAD"), cancellable = true) private void onSendChatMessage(String message, CallbackInfo ci, @Local(argsOnly = true) LocalRef messageRef) { if (!message.startsWith(Config.get().prefix.get()) && !(BaritoneUtils.IS_AVAILABLE && message.startsWith(BaritoneUtils.getPrefix()))) { SendMessageEvent event = MeteorClient.EVENT_BUS.post(SendMessageEvent.get(message)); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityMixin.java index 6770d78bba..3804118329 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityMixin.java @@ -20,16 +20,16 @@ import meteordevelopment.meteorclient.systems.modules.player.NoMiningTrace; import meteordevelopment.meteorclient.systems.modules.player.Portals; import meteordevelopment.meteorclient.utils.entity.fakeplayer.FakePlayerEntity; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.input.Input; -import net.minecraft.client.network.AbstractClientPlayerEntity; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.JumpingMount; -import net.minecraft.util.PlayerInput; -import net.minecraft.util.hit.EntityHitResult; -import net.minecraft.util.hit.HitResult; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.player.ClientInput; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.PlayerRideableJumping; +import net.minecraft.world.entity.player.Input; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -38,27 +38,28 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(ClientPlayerEntity.class) -public abstract class ClientPlayerEntityMixin extends AbstractClientPlayerEntity { +@Mixin(AbstractClientPlayer.class) +public abstract class ClientPlayerEntityMixin extends AbstractClientPlayer { @Shadow - public Input input; + public ClientInput input; - public ClientPlayerEntityMixin(ClientWorld world, GameProfile profile) { + public ClientPlayerEntityMixin(ClientLevel world, GameProfile profile) { super(world, profile); } @Inject(method = "dropSelectedItem", at = @At("HEAD"), cancellable = true) private void onDropSelectedItem(boolean dropEntireStack, CallbackInfoReturnable info) { - if (MeteorClient.EVENT_BUS.post(DropItemsEvent.get(getMainHandStack())).isCancelled()) info.setReturnValue(false); + if (MeteorClient.EVENT_BUS.post(DropItemsEvent.get(getMainHandStack())).isCancelled()) + info.setReturnValue(false); } - @ModifyExpressionValue(method = "tickNausea", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;", opcode = Opcodes.GETFIELD)) + @ModifyExpressionValue(method = "tickNausea", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Minecraft;screen:Lnet/minecraft/client/gui/screens/Screen;", opcode = Opcodes.GETFIELD)) private Screen modifyNauseaCurrentScreen(Screen original) { if (Modules.get().isActive(Portals.class)) return null; return original; } - @ModifyExpressionValue(method = "applyMovementSpeedFactors", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isUsingItem()Z")) + @ModifyExpressionValue(method = "applyMovementSpeedFactors", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isUsingItem()Z")) private boolean redirectUsingItem(boolean isUsingItem) { if (Modules.get().get(NoSlow.class).items()) return false; return isUsingItem; @@ -85,8 +86,8 @@ private void onPushOutOfBlocks(double x, double d, CallbackInfo info) { } } - @ModifyExpressionValue(method = "tick", at = @At(value = "FIELD", target = "Lnet/minecraft/client/input/Input;playerInput:Lnet/minecraft/util/PlayerInput;", opcode = Opcodes.GETFIELD)) - private PlayerInput isSneaking(PlayerInput original) { + @ModifyExpressionValue(method = "tick", at = @At(value = "FIELD", target = "Lnet/minecraft/client/player/ClientInput;keyPresses:Lnet/minecraft/world/entity/player/Input;", opcode = Opcodes.GETFIELD)) + private Input isSneaking(Input original) { if (Modules.get().get(Sneak.class).doPacket() || Modules.get().get(NoSlow.class).airStrict()) { return new PlayerInput( original.forward(), @@ -113,17 +114,17 @@ private float modifyMountJumpStrength(float original) { } @Inject(method = "getJumpingMount", at = @At("RETURN"), cancellable = true) - private void changeJumpingMount(CallbackInfoReturnable info) { + private void changeJumpingMount(CallbackInfoReturnable info) { if (Modules.get().get(EntityControl.class).cancelJump()) info.setReturnValue(null); } + // TODO(Ravel): target method getCrosshairTarget with the signature not found @ModifyReturnValue(method = "getCrosshairTarget(Lnet/minecraft/entity/Entity;DDF)Lnet/minecraft/util/hit/HitResult;", at = @At("RETURN")) - private static HitResult onUpdateTargetedEntity(HitResult original, @Local HitResult hitResult) { + private static EntityHitResult onUpdateTargetedEntity(EntityHitResult original, @Local EntityHitResult hitResult) { if (original instanceof EntityHitResult ehr) { - if (Modules.get().get(NoMiningTrace.class).canWork(ehr.getEntity()) && hitResult.getType() == HitResult.Type.BLOCK) { + if (Modules.get().get(NoMiningTrace.class).canWork(ehr.getEntity()) && hitResult.getType() == EntityHitResult.Type.BLOCK) { return hitResult; - } - else if (ehr.getEntity() instanceof FakePlayerEntity fakePlayer && fakePlayer.noHit) { + } else if (ehr.getEntity() instanceof FakePlayerEntity fakePlayer && fakePlayer.noHit) { return hitResult; } } @@ -131,17 +132,18 @@ else if (ehr.getEntity() instanceof FakePlayerEntity fakePlayer && fakePlayer.no return original; } - @ModifyExpressionValue(method = "getCrosshairTarget(Lnet/minecraft/entity/Entity;DDF)Lnet/minecraft/util/hit/HitResult;", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;raycast(DFZ)Lnet/minecraft/util/hit/HitResult;")) - private static HitResult modifyRaycastResult(HitResult original, Entity entity, double blockInteractionRange, double entityInteractionRange, float tickProgress, @Local(ordinal = 0, argsOnly = true) double maxDistance) { + // TODO(Ravel): target method getCrosshairTarget with the signature not found + @ModifyExpressionValue(method = "getCrosshairTarget(Lnet/minecraft/entity/Entity;DDF)Lnet/minecraft/util/hit/HitResult;", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;pick(DFZ)Lnet/minecraft/world/phys/HitResult;")) + private static EntityHitResult modifyRaycastResult(EntityHitResult original, Entity entity, double blockInteractionRange, double entityInteractionRange, float tickProgress, @Local(ordinal = 0, argsOnly = true) double maxDistance) { if (!Modules.get().isActive(LiquidInteract.class)) return original; - if (original.getType() != HitResult.Type.MISS) return original; + if (original.getType() != EntityHitResult.Type.MISS) return original; return entity.raycast(maxDistance, tickProgress, true); } // Sprint - @ModifyExpressionValue(method = "canStartSprinting", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/input/Input;hasForwardMovement()Z")) + @ModifyExpressionValue(method = "canStartSprinting", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/ClientInput;hasForwardImpulse()Z")) private boolean modifyIsWalking(boolean original) { if (!Modules.get().get(Sprint.class).rageSprint()) return original; @@ -151,15 +153,15 @@ private boolean modifyIsWalking(boolean original) { return (isSubmergedInWater() ? (forwards > 1.0E-5F || sideways > 1.0E-5F) : (forwards > 0.8 || sideways > 0.8)); } - @ModifyExpressionValue(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/input/Input;hasForwardMovement()Z")) + @ModifyExpressionValue(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/ClientInput;hasForwardImpulse()Z")) private boolean modifyMovement(boolean original) { if (!Modules.get().get(Sprint.class).rageSprint()) return original; return Math.abs(sidewaysSpeed) > 1.0E-5F || Math.abs(forwardSpeed) > 1.0E-5F; } - @WrapWithCondition(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;setSprinting(Z)V", ordinal = 3)) - private boolean wrapSetSprinting(ClientPlayerEntity instance, boolean b) { + @WrapWithCondition(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;setSprinting(Z)V", ordinal = 3)) + private boolean wrapSetSprinting(AbstractClientPlayer instance, boolean b) { Sprint s = Modules.get().get(Sprint.class); return !s.rageSprint() || s.unsprintInWater() && isTouchingWater(); @@ -172,7 +174,7 @@ private void onSendMovementPacketsHead(CallbackInfo info) { MeteorClient.EVENT_BUS.post(SendMovementPacketsEvent.Pre.get()); } - @Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V", ordinal = 1)) + @Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientPacketListener;sendPacket(Lnet/minecraft/network/protocol/Packet;)V", ordinal = 1)) private void onTickHasVehicleBeforeSendPackets(CallbackInfo info) { MeteorClient.EVENT_BUS.post(SendMovementPacketsEvent.Pre.get()); } @@ -182,7 +184,7 @@ private void onSendMovementPacketsTail(CallbackInfo info) { MeteorClient.EVENT_BUS.post(SendMovementPacketsEvent.Post.get()); } - @Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V", ordinal = 1, shift = At.Shift.AFTER)) + @Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientPacketListener;sendPacket(Lnet/minecraft/network/protocol/Packet;)V", ordinal = 1, shift = At.Shift.AFTER)) private void onTickHasVehicleAfterSendPackets(CallbackInfo info) { MeteorClient.EVENT_BUS.post(SendMovementPacketsEvent.Post.get()); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerInteractionManagerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerInteractionManagerAccessor.java deleted file mode 100644 index b02b676860..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerInteractionManagerAccessor.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.client.network.ClientPlayerInteractionManager; -import net.minecraft.util.math.BlockPos; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ClientPlayerInteractionManager.class) -public interface ClientPlayerInteractionManagerAccessor { - @Accessor("currentBreakingProgress") - float meteor$getBreakingProgress(); - - @Accessor("currentBreakingProgress") - void meteor$setCurrentBreakingProgress(float progress); - - @Accessor("currentBreakingPos") - BlockPos meteor$getCurrentBreakingBlockPos(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerInteractionManagerMixin.java index ac45c37498..d076048059 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerInteractionManagerMixin.java @@ -14,21 +14,21 @@ import meteordevelopment.meteorclient.systems.modules.player.BreakDelay; import meteordevelopment.meteorclient.systems.modules.player.SpeedMine; import meteordevelopment.meteorclient.utils.world.BlockUtils; -import net.minecraft.block.BlockState; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.network.ClientPlayerInteractionManager; -import net.minecraft.client.network.SequencedPacketCreator; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket; -import net.minecraft.screen.slot.SlotActionType; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.client.multiplayer.prediction.PredictiveAction; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.network.protocol.game.ServerboundPlayerActionPacket; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -40,29 +40,46 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; +// TODO(Ravel): can not resolve target class ClientPlayerInteractionManager +// TODO(Ravel): can not resolve target class ClientPlayerInteractionManager @Mixin(ClientPlayerInteractionManager.class) public abstract class ClientPlayerInteractionManagerMixin implements IClientPlayerInteractionManager { - @Shadow private int blockBreakingCooldown; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + private int blockBreakingCooldown; - @Shadow protected abstract void syncSelectedSlot(); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + protected abstract void syncSelectedSlot(); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow public abstract boolean breakBlock(BlockPos pos); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow - public abstract void sendSequencedPacket(ClientWorld world, SequencedPacketCreator packetCreator); + public abstract void sendSequencedPacket(ClientLevel world, PredictiveAction packetCreator); + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "clickSlot", at = @At("HEAD"), cancellable = true) - private void onClickSlot(int syncId, int slotId, int button, SlotActionType actionType, PlayerEntity player, CallbackInfo info) { - if (actionType == SlotActionType.THROW && slotId >= 0 && slotId < player.currentScreenHandler.slots.size()) { - if (MeteorClient.EVENT_BUS.post(DropItemsEvent.get(player.currentScreenHandler.slots.get(slotId).getStack())).isCancelled()) info.cancel(); - } - else if (slotId == -999) { + private void onClickSlot(int syncId, int slotId, int button, ClickType actionType, LocalPlayer player, CallbackInfo info) { + if (actionType == ClickType.THROW && slotId >= 0 && slotId < player.currentScreenHandler.slots.size()) { + if (MeteorClient.EVENT_BUS.post(DropItemsEvent.get(player.currentScreenHandler.slots.get(slotId).getStack())).isCancelled()) + info.cancel(); + } else if (slotId == -999) { // Clicking outside of inventory - if (MeteorClient.EVENT_BUS.post(DropItemsEvent.get(player.currentScreenHandler.getCursorStack())).isCancelled()) info.cancel(); + if (MeteorClient.EVENT_BUS.post(DropItemsEvent.get(player.currentScreenHandler.getCursorStack())).isCancelled()) + info.cancel(); } } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "attackBlock", at = @At("HEAD"), cancellable = true) private void onAttackBlock(BlockPos blockPos, Direction direction, CallbackInfoReturnable info) { if (MeteorClient.EVENT_BUS.post(StartBreakingBlockEvent.get(blockPos, direction)).isCancelled()) info.cancel(); @@ -74,52 +91,70 @@ private void onAttackBlock(BlockPos blockPos, Direction direction, CallbackInfoR if (state.calcBlockBreakingDelta(mc.player, mc.world, blockPos) > 0.5f) { breakBlock(blockPos); - sendSequencedPacket(mc.world, (sequence) -> new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.START_DESTROY_BLOCK, blockPos, direction, sequence)); - sendSequencedPacket(mc.world, (sequence) -> new PlayerActionC2SPacket(PlayerActionC2SPacket.Action.STOP_DESTROY_BLOCK, blockPos, direction, sequence)); + sendSequencedPacket(mc.world, (sequence) -> new PlayerActionC2SPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, blockPos, direction, sequence)); + sendSequencedPacket(mc.world, (sequence) -> new PlayerActionC2SPacket(ServerboundPlayerActionPacket.Action.STOP_DESTROY_BLOCK, blockPos, direction, sequence)); info.setReturnValue(true); } } } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "interactBlock", at = @At("HEAD"), cancellable = true) - public void interactBlock(ClientPlayerEntity player, Hand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { - if (MeteorClient.EVENT_BUS.post(InteractBlockEvent.get(player.getMainHandStack().isEmpty() ? Hand.OFF_HAND : hand, hitResult)).isCancelled()) cir.setReturnValue(ActionResult.FAIL); + public void interactBlock(LocalPlayer player, InteractionHand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { + if (MeteorClient.EVENT_BUS.post(InteractBlockEvent.get(player.getMainHandStack().isEmpty() ? InteractionHand.OFF_HAND : hand, hitResult)).isCancelled()) + cir.setReturnValue(InteractionResult.FAIL); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "attackEntity", at = @At("HEAD"), cancellable = true) - private void onAttackEntity(PlayerEntity player, Entity target, CallbackInfo info) { + private void onAttackEntity(LocalPlayer player, LocalPlayer target, CallbackInfo info) { if (MeteorClient.EVENT_BUS.post(AttackEntityEvent.get(target)).isCancelled()) info.cancel(); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "interactEntity", at = @At("HEAD"), cancellable = true) - private void onInteractEntity(PlayerEntity player, Entity entity, Hand hand, CallbackInfoReturnable info) { - if (MeteorClient.EVENT_BUS.post(InteractEntityEvent.get(entity, hand)).isCancelled()) info.setReturnValue(ActionResult.FAIL); + private void onInteractEntity(LocalPlayer player, LocalPlayer entity, InteractionHand hand, CallbackInfoReturnable info) { + if (MeteorClient.EVENT_BUS.post(InteractEntityEvent.get(entity, hand)).isCancelled()) + info.setReturnValue(InteractionResult.FAIL); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "dropCreativeStack", at = @At("HEAD"), cancellable = true) private void onDropCreativeStack(ItemStack stack, CallbackInfo info) { if (MeteorClient.EVENT_BUS.post(DropItemsEvent.get(stack)).isCancelled()) info.cancel(); } - @Redirect(method = "updateBlockBreakingProgress", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;blockBreakingCooldown:I", opcode = Opcodes.PUTFIELD, ordinal = 1)) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Redirect(method = "updateBlockBreakingProgress", at = @At(value = "FIELD", target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;destroyDelay:I", opcode = Opcodes.PUTFIELD, ordinal = 1)) private void creativeBreakDelayChange(ClientPlayerInteractionManager interactionManager, int value) { BlockBreakingCooldownEvent event = MeteorClient.EVENT_BUS.post(BlockBreakingCooldownEvent.get(value)); blockBreakingCooldown = event.cooldown; } - @Redirect(method = "updateBlockBreakingProgress", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;blockBreakingCooldown:I", opcode = Opcodes.PUTFIELD, ordinal = 2)) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Redirect(method = "updateBlockBreakingProgress", at = @At(value = "FIELD", target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;destroyDelay:I", opcode = Opcodes.PUTFIELD, ordinal = 2)) private void survivalBreakDelayChange(ClientPlayerInteractionManager interactionManager, int value) { BlockBreakingCooldownEvent event = MeteorClient.EVENT_BUS.post(BlockBreakingCooldownEvent.get(value)); blockBreakingCooldown = event.cooldown; } - @Redirect(method = "attackBlock", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;blockBreakingCooldown:I", opcode = Opcodes.PUTFIELD)) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Redirect(method = "attackBlock", at = @At(value = "FIELD", target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;destroyDelay:I", opcode = Opcodes.PUTFIELD)) private void creativeBreakDelayChange2(ClientPlayerInteractionManager interactionManager, int value) { BlockBreakingCooldownEvent event = MeteorClient.EVENT_BUS.post(BlockBreakingCooldownEvent.get(value)); blockBreakingCooldown = event.cooldown; } - @ModifyExpressionValue(method = "method_41930", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/BlockState;calcBlockBreakingDelta(Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;)F")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "method_41930", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;calcBlockBreakingDelta(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)F")) private float modifyBlockBreakingDelta(float original) { if (Modules.get().get(BreakDelay.class).preventInstaBreak() && original >= 1) { BlockBreakingCooldownEvent event = MeteorClient.EVENT_BUS.post(BlockBreakingCooldownEvent.get(blockBreakingCooldown)); @@ -129,17 +164,23 @@ private float modifyBlockBreakingDelta(float original) { return original; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "breakBlock", at = @At("HEAD"), cancellable = true) private void onBreakBlock(BlockPos blockPos, CallbackInfoReturnable info) { if (MeteorClient.EVENT_BUS.post(BreakBlockEvent.get(blockPos)).isCancelled()) info.setReturnValue(false); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "interactItem", at = @At("HEAD"), cancellable = true) - private void onInteractItem(PlayerEntity player, Hand hand, CallbackInfoReturnable info) { + private void onInteractItem(LocalPlayer player, InteractionHand hand, CallbackInfoReturnable info) { InteractItemEvent event = MeteorClient.EVENT_BUS.post(InteractItemEvent.get(hand)); if (event.toReturn != null) info.setReturnValue(event.toReturn); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "cancelBlockBreaking", at = @At("HEAD"), cancellable = true) private void onCancelBlockBreaking(CallbackInfo info) { if (BlockUtils.breaking) info.cancel(); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EntityVelocityUpdateS2CPacketAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ClientboundSetEntityMotionPacketAccessor.java similarity index 54% rename from src/main/java/meteordevelopment/meteorclient/mixin/EntityVelocityUpdateS2CPacketAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ClientboundSetEntityMotionPacketAccessor.java index e4993afe5f..93115a6872 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EntityVelocityUpdateS2CPacketAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ClientboundSetEntityMotionPacketAccessor.java @@ -5,16 +5,16 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.network.packet.s2c.play.EntityVelocityUpdateS2CPacket; -import net.minecraft.util.math.Vec3d; +import net.minecraft.network.protocol.game.ClientboundSetEntityMotionPacket; +import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(EntityVelocityUpdateS2CPacket.class) -public interface EntityVelocityUpdateS2CPacketAccessor { +@Mixin(ClientboundSetEntityMotionPacket.class) +public interface ClientboundSetEntityMotionPacketAccessor { @Mutable - @Accessor("velocity") - void meteor$setVelocity(Vec3d velocity); + @Accessor("movement") + void meteor$setMovement(Vec3 velocity); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChatInputSuggestorMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/CommandSuggestionsMixin.java similarity index 61% rename from src/main/java/meteordevelopment/meteorclient/mixin/ChatInputSuggestorMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/CommandSuggestionsMixin.java index 79d245b1e7..fd95ba78b9 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChatInputSuggestorMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CommandSuggestionsMixin.java @@ -11,9 +11,9 @@ import com.mojang.brigadier.suggestion.Suggestions; import meteordevelopment.meteorclient.commands.Commands; import meteordevelopment.meteorclient.systems.config.Config; -import net.minecraft.client.gui.screen.ChatInputSuggestor; -import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.command.CommandSource; +import net.minecraft.client.gui.components.CommandSuggestions; +import net.minecraft.client.gui.components.EditBox; +import net.minecraft.commands.SharedSuggestionProvider; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -25,18 +25,24 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; -@Mixin(ChatInputSuggestor.class) -public abstract class ChatInputSuggestorMixin { - @Shadow private ParseResults parse; - @Shadow @Final TextFieldWidget textField; - @Shadow boolean completingSuggestions; - @Shadow private CompletableFuture pendingSuggestions; - @Shadow private ChatInputSuggestor.SuggestionWindow window; +@Mixin(CommandSuggestions.class) +public abstract class CommandSuggestionsMixin { + @Shadow + private ParseResults currentParse; + @Shadow + @Final + EditBox input; + @Shadow + boolean keepSuggestions; + @Shadow + private CompletableFuture pendingSuggestions; + @Shadow + private CommandSuggestions.SuggestionsList suggestions; @Shadow - protected abstract void showCommandSuggestions(); + protected abstract void updateUsageInfo(); - @Inject(method = "refresh", + @Inject(method = "updateCommandInfo", at = @At(value = "INVOKE", target = "Lcom/mojang/brigadier/StringReader;canRead()Z", remap = false), cancellable = true ) @@ -47,16 +53,16 @@ public void onRefresh(CallbackInfo ci, @Local StringReader reader) { if (reader.canRead(length) && reader.getString().startsWith(prefix, reader.getCursor())) { reader.setCursor(reader.getCursor() + length); - if (this.parse == null) { - this.parse = Commands.DISPATCHER.parse(reader, mc.getNetworkHandler().getCommandSource()); + if (this.currentParse == null) { + this.currentParse = Commands.DISPATCHER.parse(reader, mc.getNetworkHandler().getCommandSource()); } - int cursor = textField.getCursor(); - if (cursor >= length && (this.window == null || !this.completingSuggestions)) { - this.pendingSuggestions = Commands.DISPATCHER.getCompletionSuggestions(this.parse, cursor); + int cursor = input.getCursor(); + if (cursor >= length && (this.suggestions == null || !this.keepSuggestions)) { + this.pendingSuggestions = Commands.DISPATCHER.getCompletionSuggestions(this.currentParse, cursor); this.pendingSuggestions.thenRun(() -> { if (this.pendingSuggestions.isDone()) { - this.showCommandSuggestions(); + this.updateUsageInfo(); } }); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/CompassStateMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/CompassAngleStateMixin.java similarity index 58% rename from src/main/java/meteordevelopment/meteorclient/mixin/CompassStateMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/CompassAngleStateMixin.java index 89a3a612a6..98b799e00e 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/CompassStateMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CompassAngleStateMixin.java @@ -9,28 +9,28 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.Freecam; -import net.minecraft.client.render.Camera; -import net.minecraft.client.render.item.property.numeric.CompassState; -import net.minecraft.util.HeldItemContext; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.item.properties.numeric.CompassAngleState; +import net.minecraft.world.entity.ItemOwner; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import static meteordevelopment.meteorclient.MeteorClient.mc; -@Mixin(CompassState.class) -public abstract class CompassStateMixin { - @ModifyExpressionValue(method = "getBodyYaw", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/HeldItemContext;getBodyYaw()F")) +@Mixin(CompassAngleState.class) +public abstract class CompassAngleStateMixin { + @ModifyExpressionValue(method = "getWrappedVisualRotationY", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/ItemOwner;getVisualRotationYInDegrees()F")) private static float callLivingEntityGetYaw(float original) { if (Modules.get().isActive(Freecam.class)) return mc.gameRenderer.getCamera().getYaw(); return original; } - @ModifyReturnValue(method = "getAngleTo(Lnet/minecraft/util/HeldItemContext;Lnet/minecraft/util/math/BlockPos;)D", at = @At("RETURN")) - private static double modifyGetAngleTo(double original, HeldItemContext from, BlockPos to) { + @ModifyReturnValue(method = "getAngleFromEntityToPos(Lnet/minecraft/world/entity/ItemOwner;Lnet/minecraft/core/BlockPos;)D", at = @At("RETURN")) + private static double modifyGetAngleTo(double original, ItemOwner from, BlockPos to) { if (Modules.get().isActive(Freecam.class)) { - Vec3d vec3d = Vec3d.ofCenter(to); + Vec3 vec3d = Vec3.ofCenter(to); Camera camera = mc.gameRenderer.getCamera(); return Math.atan2(vec3d.getZ() - camera.getCameraPos().z, vec3d.getX() - camera.getCameraPos().x) / (float) (Math.PI * 2); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ConnectScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ConnectScreenMixin.java index 6d2e056e5d..850937ca06 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ConnectScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ConnectScreenMixin.java @@ -7,11 +7,11 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.world.ServerConnectBeginEvent; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.multiplayer.ConnectScreen; -import net.minecraft.client.network.CookieStorage; -import net.minecraft.client.network.ServerAddress; -import net.minecraft.client.network.ServerInfo; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.ConnectScreen; +import net.minecraft.client.multiplayer.TransferState; +import net.minecraft.client.multiplayer.resolver.ServerAddress; +import net.minecraft.client.multiplayer.ServerData; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -19,8 +19,8 @@ @Mixin(ConnectScreen.class) public abstract class ConnectScreenMixin { - @Inject(method = "connect(Lnet/minecraft/client/MinecraftClient;Lnet/minecraft/client/network/ServerAddress;Lnet/minecraft/client/network/ServerInfo;Lnet/minecraft/client/network/CookieStorage;)V", at = @At("HEAD")) - private void tryConnectEvent(MinecraftClient client, ServerAddress address, ServerInfo info, CookieStorage cookieStorage, CallbackInfo ci) { + @Inject(method = "connect(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/multiplayer/resolver/ServerAddress;Lnet/minecraft/client/multiplayer/ServerData;Lnet/minecraft/client/multiplayer/TransferState;)V", at = @At("HEAD")) + private void tryConnectEvent(Minecraft client, ServerAddress address, ServerData info, TransferState cookieStorage, CallbackInfo ci) { MeteorClient.EVENT_BUS.post(ServerConnectBeginEvent.get(address, info)); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientConnectionAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ConnectionAccessor.java similarity index 75% rename from src/main/java/meteordevelopment/meteorclient/mixin/ClientConnectionAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ConnectionAccessor.java index c05cb1e73e..dd53440c6c 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientConnectionAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ConnectionAccessor.java @@ -6,12 +6,12 @@ package meteordevelopment.meteorclient.mixin; import io.netty.channel.Channel; -import net.minecraft.network.ClientConnection; +import net.minecraft.network.Connection; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(ClientConnection.class) -public interface ClientConnectionAccessor { +@Mixin(Connection.class) +public interface ConnectionAccessor { @Accessor("channel") Channel meteor$getChannel(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientConnectionMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ConnectionMixin.java similarity index 54% rename from src/main/java/meteordevelopment/meteorclient/mixin/ClientConnectionMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ConnectionMixin.java index c435faab0b..33da5d46f7 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientConnectionMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ConnectionMixin.java @@ -20,17 +20,17 @@ import meteordevelopment.meteorclient.systems.modules.world.HighwayBuilder; import meteordevelopment.meteorclient.systems.proxies.Proxies; import meteordevelopment.meteorclient.systems.proxies.Proxy; -import net.minecraft.network.ClientConnection; -import net.minecraft.network.NetworkSide; -import net.minecraft.network.NetworkingBackend; -import net.minecraft.network.handler.PacketEncoderException; -import net.minecraft.network.handler.PacketSizeLogger; -import net.minecraft.network.listener.ClientPlayPacketListener; -import net.minecraft.network.packet.Packet; -import net.minecraft.network.packet.s2c.play.BundleS2CPacket; -import net.minecraft.text.MutableText; -import net.minecraft.text.Text; -import net.minecraft.util.Formatting; +import net.minecraft.network.Connection; +import net.minecraft.network.protocol.PacketFlow; +import net.minecraft.server.network.EventLoopGroupHolder; +import net.minecraft.network.SkipPacketEncoderException; +import net.minecraft.network.BandwidthDebugMonitor; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientboundBundlePacket; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.ChatFormatting; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -41,64 +41,68 @@ import java.net.InetSocketAddress; import java.util.Iterator; -@Mixin(ClientConnection.class) -public abstract class ClientConnectionMixin { - @Inject(method = "channelRead0(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/packet/Packet;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;handlePacket(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/listener/PacketListener;)V", shift = At.Shift.BEFORE), cancellable = true) +@Mixin(Connection.class) +public abstract class ConnectionMixin { + @Inject(method = "channelRead0(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/protocol/Packet;)V", + at = @At(value = "INVOKE", target = "Lnet/minecraft/network/Connection;genericsFtw(Lnet/minecraft/network/protocol/Packet;Lnet/minecraft/network/PacketListener;)V", shift = At.Shift.BEFORE), cancellable = true) private void onHandlePacket(ChannelHandlerContext channelHandlerContext, Packet packet, CallbackInfo ci) { - if (packet instanceof BundleS2CPacket bundle) { - for (Iterator> it = bundle.getPackets().iterator(); it.hasNext(); ) { - if (MeteorClient.EVENT_BUS.post(new PacketEvent.Receive(it.next(), (ClientConnection) (Object) this)).isCancelled()) it.remove(); + if (packet instanceof ClientboundBundlePacket bundle) { + for (Iterator> it = bundle.getPackets().iterator(); it.hasNext(); ) { + if (MeteorClient.EVENT_BUS.post(new PacketEvent.Receive(it.next(), (Connection) (Object) this)).isCancelled()) + it.remove(); } - } else if (MeteorClient.EVENT_BUS.post(new PacketEvent.Receive(packet, (ClientConnection) (Object) this)).isCancelled()) ci.cancel(); + } else if (MeteorClient.EVENT_BUS.post(new PacketEvent.Receive(packet, (Connection) (Object) this)).isCancelled()) + ci.cancel(); } - @Inject(method = "disconnect(Lnet/minecraft/text/Text;)V", at = @At("HEAD")) - private void disconnect(Text disconnectReason, CallbackInfo ci) { + @Inject(method = "disconnect(Lnet/minecraft/network/chat/Component;)V", at = @At("HEAD")) + private void disconnect(MutableComponent disconnectReason, CallbackInfo ci) { if (Modules.get().get(HighwayBuilder.class).isActive()) { - MutableText text = Text.literal("%n%n%s[%sHighway Builder%s] Statistics:%n".formatted(Formatting.GRAY, Formatting.BLUE, Formatting.GRAY)); + MutableComponent text = MutableComponent.literal("%n%n%s[%sHighway Builder%s] Statistics:%n".formatted(ChatFormatting.GRAY, ChatFormatting.BLUE, ChatFormatting.GRAY)); text.append(Modules.get().get(HighwayBuilder.class).getStatsText()); - ((MutableText) disconnectReason).append(text); + ((MutableComponent) disconnectReason).append(text); } } - @Inject(method = "connect(Ljava/net/InetSocketAddress;Lnet/minecraft/network/NetworkingBackend;Lnet/minecraft/network/ClientConnection;)Lio/netty/channel/ChannelFuture;", at = @At("HEAD")) - private static void onConnect(InetSocketAddress address, NetworkingBackend backend, ClientConnection connection, CallbackInfoReturnable cir) { + @Inject(method = "connect(Ljava/net/InetSocketAddress;Lnet/minecraft/server/network/EventLoopGroupHolder;Lnet/minecraft/network/Connection;)Lio/netty/channel/ChannelFuture;", at = @At("HEAD")) + private static void onConnect(InetSocketAddress address, EventLoopGroupHolder backend, Connection connection, CallbackInfoReturnable cir) { MeteorClient.EVENT_BUS.post(ServerConnectEndEvent.get(address)); } - @Inject(at = @At("HEAD"), method = "send(Lnet/minecraft/network/packet/Packet;Lio/netty/channel/ChannelFutureListener;)V", cancellable = true) + @Inject(at = @At("HEAD"), method = "send(Lnet/minecraft/network/protocol/Packet;Lio/netty/channel/ChannelFutureListener;)V", cancellable = true) private void onSendPacketHead(Packet packet, @Nullable ChannelFutureListener channelFutureListener, CallbackInfo ci) { - if (MeteorClient.EVENT_BUS.post(new PacketEvent.Send(packet, (ClientConnection) (Object) this)).isCancelled()) { + if (MeteorClient.EVENT_BUS.post(new PacketEvent.Send(packet, (Connection) (Object) this)).isCancelled()) { ci.cancel(); } } - @Inject(method = "send(Lnet/minecraft/network/packet/Packet;Lio/netty/channel/ChannelFutureListener;)V", at = @At("TAIL")) + @Inject(method = "send(Lnet/minecraft/network/protocol/Packet;Lio/netty/channel/ChannelFutureListener;)V", at = @At("TAIL")) private void onSendPacketTail(Packet packet, @Nullable ChannelFutureListener channelFutureListener, CallbackInfo ci) { - MeteorClient.EVENT_BUS.post(new PacketEvent.Sent(packet, (ClientConnection) (Object) this)); + MeteorClient.EVENT_BUS.post(new PacketEvent.Sent(packet, (Connection) (Object) this)); } @Inject(method = "exceptionCaught", at = @At("HEAD"), cancellable = true) private void exceptionCaught(ChannelHandlerContext context, Throwable throwable, CallbackInfo ci) { AntiPacketKick apk = Modules.get().get(AntiPacketKick.class); - if (!(throwable instanceof TimeoutException) && !(throwable instanceof PacketEncoderException) && apk.catchExceptions()) { + if (!(throwable instanceof TimeoutException) && !(throwable instanceof SkipPacketEncoderException) && apk.catchExceptions()) { if (apk.logExceptions.get()) apk.warning("Caught exception: %s", throwable); ci.cancel(); } } - @Inject(method = "addHandlers", at = @At("RETURN")) - private static void onAddHandlers(ChannelPipeline pipeline, NetworkSide side, boolean local, PacketSizeLogger packetSizeLogger, CallbackInfo ci) { - if (side != NetworkSide.CLIENTBOUND || local) return; + @Inject(method = "configureSerialization", at = @At("RETURN")) + private static void onAddHandlers(ChannelPipeline pipeline, PacketFlow side, boolean local, BandwidthDebugMonitor packetSizeLogger, CallbackInfo ci) { + if (side != PacketFlow.CLIENTBOUND || local) return; Proxy proxy = Proxies.get().getEnabled(); if (proxy == null) return; switch (proxy.type.get()) { - case Socks4 -> pipeline.addFirst(new Socks4ProxyHandler(new InetSocketAddress(proxy.address.get(), proxy.port.get()), proxy.username.get())); - case Socks5 -> pipeline.addFirst(new Socks5ProxyHandler(new InetSocketAddress(proxy.address.get(), proxy.port.get()), proxy.username.get(), proxy.password.get())); + case Socks4 -> + pipeline.addFirst(new Socks4ProxyHandler(new InetSocketAddress(proxy.address.get(), proxy.port.get()), proxy.username.get())); + case Socks5 -> + pipeline.addFirst(new Socks5ProxyHandler(new InetSocketAddress(proxy.address.get(), proxy.port.get()), proxy.username.get(), proxy.password.get())); } } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ContainerComponentAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ContainerComponentAccessor.java deleted file mode 100644 index 0e77788cfc..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ContainerComponentAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.component.type.ContainerComponent; -import net.minecraft.item.ItemStack; -import net.minecraft.util.collection.DefaultedList; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ContainerComponent.class) -public interface ContainerComponentAccessor { - @Accessor("stacks") - DefaultedList meteor$getStacks(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/CrashReportMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/CrashReportMixin.java index 8b7f4a264b..88896baf96 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/CrashReportMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CrashReportMixin.java @@ -12,7 +12,7 @@ import meteordevelopment.meteorclient.systems.modules.Category; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; -import net.minecraft.util.crash.CrashReport; +import net.minecraft.CrashReport; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -22,7 +22,7 @@ @Mixin(CrashReport.class) public abstract class CrashReportMixin { - @Inject(method = "addDetails", at = @At("TAIL")) + @Inject(method = "getDetails", at = @At("TAIL")) private void onAddDetails(StringBuilder sb, CallbackInfo info) { sb.append("\n\n-- Meteor Client --\n\n"); sb.append("Version: ").append(MeteorClient.VERSION).append("\n"); @@ -47,8 +47,8 @@ private void onAddDetails(StringBuilder sb, CallbackInfo info) { if (!categoryActive) { categoryActive = true; sb.append("\n[") - .append(category) - .append("]:\n"); + .append(category) + .append("]:\n"); } sb.append(module.name).append("\n"); @@ -71,13 +71,13 @@ private void onAddDetails(StringBuilder sb, CallbackInfo info) { if (!(element instanceof TextHud textHud)) sb.append(element.info.name).append("\n"); else { sb.append("Text\n{") - .append(textHud.text.get()) - .append("}\n"); + .append(textHud.text.get()) + .append("}\n"); if (textHud.shown.get() != TextHud.Shown.Always) { sb.append("(") - .append(textHud.shown.get()) - .append(textHud.condition.get()) - .append(")\n"); + .append(textHud.shown.get()) + .append(textHud.condition.get()) + .append(")\n"); } } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/CreativeInventoryScreenAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/CreativeModeInventoryScreenAccessor.java similarity index 55% rename from src/main/java/meteordevelopment/meteorclient/mixin/CreativeInventoryScreenAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/CreativeModeInventoryScreenAccessor.java index b67a4445e5..ee2e26010a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/CreativeInventoryScreenAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CreativeModeInventoryScreenAccessor.java @@ -5,15 +5,15 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; -import net.minecraft.item.ItemGroup; +import net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen; +import net.minecraft.world.item.CreativeModeTab; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(CreativeInventoryScreen.class) -public interface CreativeInventoryScreenAccessor { +@Mixin(CreativeModeInventoryScreen.class) +public interface CreativeModeInventoryScreenAccessor { @Accessor("selectedTab") - static ItemGroup meteor$getSelectedTab() { + static CreativeModeTab meteor$getSelectedTab() { return null; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemGroupsAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/CreativeModeTabsAccessor.java similarity index 56% rename from src/main/java/meteordevelopment/meteorclient/mixin/ItemGroupsAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/CreativeModeTabsAccessor.java index 71d7941e43..c76bd2840d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ItemGroupsAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CreativeModeTabsAccessor.java @@ -5,16 +5,16 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemGroups; -import net.minecraft.registry.RegistryKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.resources.ResourceKey; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(ItemGroups.class) -public interface ItemGroupsAccessor { +@Mixin(CreativeModeTabs.class) +public interface CreativeModeTabsAccessor { @Accessor("INVENTORY") - static RegistryKey meteor$getInventory() { + static ResourceKey meteor$getInventory() { throw new AssertionError(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemGroupsMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/CreativeModeTabsMixin.java similarity index 76% rename from src/main/java/meteordevelopment/meteorclient/mixin/ItemGroupsMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/CreativeModeTabsMixin.java index 0842200b8c..64159a597e 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ItemGroupsMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CreativeModeTabsMixin.java @@ -8,13 +8,13 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.BetterTooltips; -import net.minecraft.item.ItemGroups; +import net.minecraft.world.item.CreativeModeTabs; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(ItemGroups.class) -public abstract class ItemGroupsMixin { - @ModifyReturnValue(method = "updateDisplayContext", at = @At("RETURN")) +@Mixin(CreativeModeTabs.class) +public abstract class CreativeModeTabsMixin { + @ModifyReturnValue(method = "tryRebuildTabContents", at = @At("RETURN")) private static boolean modifyReturn(boolean original) { return original || Modules.get().get(BetterTooltips.class).updateTooltips(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/CreativeSlotMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/CreativeSlotMixin.java index cc65e2f631..6baf975a22 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/CreativeSlotMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CreativeSlotMixin.java @@ -6,22 +6,24 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.ISlot; -import net.minecraft.screen.slot.Slot; +import net.minecraft.world.inventory.Slot; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -@Mixin(targets = "net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen$CreativeSlot") +@Mixin(targets = "net.minecraft.client.gui.screens.inventory.CreativeModeInventoryScreen$SlotWrapper") public abstract class CreativeSlotMixin implements ISlot { - @Shadow @Final Slot slot; + @Shadow + @Final + Slot target; @Override public int meteor$getId() { - return slot.id; + return target.id; } @Override public int meteor$getIndex() { - return slot.getIndex(); + return target.getIndex(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/CrossbowItemAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/CrossbowItemAccessor.java index 1e4c0d4d4a..641a171bed 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/CrossbowItemAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CrossbowItemAccessor.java @@ -5,13 +5,15 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.component.type.ChargedProjectilesComponent; -import net.minecraft.item.CrossbowItem; +import net.minecraft.world.item.component.ChargedProjectiles; +import net.minecraft.world.item.CrossbowItem; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(CrossbowItem.class) public interface CrossbowItemAccessor { - @Invoker("getSpeed") - static float meteor$getSpeed(ChargedProjectilesComponent itemStack) { return 0; } + @Invoker("getShootingPower") + static float meteor$getSpeed(ChargedProjectiles itemStack) { + return 0; + } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/CustomHeadLayerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/CustomHeadLayerMixin.java new file mode 100644 index 0000000000..c8c3a20936 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/CustomHeadLayerMixin.java @@ -0,0 +1,29 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.NoRender; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.layers.CustomHeadLayer; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.model.HeadedModel; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import com.mojang.blaze3d.vertex.PoseStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(CustomHeadLayer.class) +public abstract class CustomHeadLayerMixin & HeadedModel> { + @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;FF)V", at = @At("HEAD"), cancellable = true) + private void onRender(PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, int i, S livingEntityRenderState, float f, float g, CallbackInfo ci) { + if (livingEntityRenderState instanceof AvatarRenderState && Modules.get().get(NoRender.class).noArmor()) + ci.cancel(); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/DirectionAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/DirectionAccessor.java index e808da0c2c..f8977e950c 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/DirectionAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/DirectionAccessor.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.util.math.Direction; +import net.minecraft.core.Direction; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(Direction.class) public interface DirectionAccessor { - @Accessor("HORIZONTAL") + @Accessor("BY_2D_DATA") static Direction[] meteor$getHorizontal() { throw new AssertionError(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/DisconnectedScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/DisconnectedScreenMixin.java index 4a8bab9ae1..458f1af3c9 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/DisconnectedScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/DisconnectedScreenMixin.java @@ -7,13 +7,13 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.AutoReconnect; -import net.minecraft.client.gui.screen.DisconnectedScreen; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.TitleScreen; -import net.minecraft.client.gui.screen.multiplayer.ConnectScreen; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.client.gui.widget.DirectionalLayoutWidget; -import net.minecraft.text.Text; +import net.minecraft.client.gui.screens.DisconnectedScreen; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.TitleScreen; +import net.minecraft.client.gui.screens.ConnectScreen; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.layouts.LinearLayout; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -25,29 +25,31 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; @Mixin(DisconnectedScreen.class) -public abstract class DisconnectedScreenMixin extends Screen { +public abstract class DisconnectedScreenMixin extends DisconnectedScreen { @Shadow @Final - private DirectionalLayoutWidget grid; - @Unique private ButtonWidget reconnectBtn; - @Unique private double time = Modules.get().get(AutoReconnect.class).time.get() * 20; + private LinearLayout layout; + @Unique + private Button reconnectBtn; + @Unique + private double time = Modules.get().get(AutoReconnect.class).time.get() * 20; - protected DisconnectedScreenMixin(Text title) { + protected DisconnectedScreenMixin(Component title) { super(title); } - @Inject(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/DirectionalLayoutWidget;refreshPositions()V", shift = At.Shift.BEFORE)) + @Inject(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/layouts/LinearLayout;refreshPositions()V", shift = At.Shift.BEFORE)) private void addButtons(CallbackInfo ci) { AutoReconnect autoReconnect = Modules.get().get(AutoReconnect.class); if (autoReconnect.lastServerConnection != null && !autoReconnect.button.get()) { - reconnectBtn = new ButtonWidget.Builder(Text.literal(getText()), button -> tryConnecting()).build(); - grid.add(reconnectBtn); + reconnectBtn = new Button.Builder(Component.literal(getText()), button -> tryConnecting()).build(); + layout.add(reconnectBtn); - grid.add( - new ButtonWidget.Builder(Text.literal("Toggle Auto Reconnect"), button -> { + layout.add( + new Button.Builder(Component.literal("Toggle Auto Reconnect"), button -> { autoReconnect.toggle(); - reconnectBtn.setMessage(Text.literal(getText())); + reconnectBtn.setMessage(Component.literal(getText())); time = autoReconnect.time.get() * 20; }).build() ); @@ -63,7 +65,7 @@ public void tick() { tryConnecting(); } else { time--; - if (reconnectBtn != null) reconnectBtn.setMessage(Text.literal(getText())); + if (reconnectBtn != null) reconnectBtn.setMessage(Component.literal(getText())); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/DownloaderMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/DownloadQueueMixin.java similarity index 77% rename from src/main/java/meteordevelopment/meteorclient/mixin/DownloaderMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/DownloadQueueMixin.java index 85362f4815..ef1816c34b 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/DownloaderMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/DownloadQueueMixin.java @@ -8,7 +8,7 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.sugar.Local; import meteordevelopment.meteorclient.MeteorClient; -import net.minecraft.util.Downloader; +import net.minecraft.server.packs.DownloadQueue; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -27,13 +27,13 @@ * @author Izuna * @see MixinDownloader.java */ -@Mixin(Downloader.class) -public class DownloaderMixin { +@Mixin(DownloadQueue.class) +public class DownloadQueueMixin { @Shadow @Final - private Path directory; + private Path cacheDir; - @ModifyExpressionValue(method = "method_55485", at = @At(value = "INVOKE", target = "Ljava/nio/file/Path;resolve(Ljava/lang/String;)Ljava/nio/file/Path;")) + @ModifyExpressionValue(method = "lambda$runDownload$0", at = @At(value = "INVOKE", target = "Ljava/nio/file/Path;resolve(Ljava/lang/String;)Ljava/nio/file/Path;")) private Path hookResolve(Path original, @Local(argsOnly = true) UUID id) { UUID accountId = mc.getSession().getUuidOrNull(); if (accountId == null) { @@ -41,6 +41,6 @@ private Path hookResolve(Path original, @Local(argsOnly = true) UUID id) { return original; } - return directory.resolve(accountId.toString()).resolve(id.toString()); + return cacheDir.resolve(accountId.toString()).resolve(id.toString()); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ServerResourcePackLoaderMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/DownloadedPackSourceMixin.java similarity index 82% rename from src/main/java/meteordevelopment/meteorclient/mixin/ServerResourcePackLoaderMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/DownloadedPackSourceMixin.java index 72ad4779c7..e9f33761d4 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ServerResourcePackLoaderMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/DownloadedPackSourceMixin.java @@ -7,14 +7,14 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.ServerSpoof; -import net.minecraft.client.resource.server.ServerResourcePackLoader; +import net.minecraft.client.resources.server.DownloadedPackSource; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ServerResourcePackLoader.class) -public abstract class ServerResourcePackLoaderMixin { +@Mixin(DownloadedPackSource.class) +public abstract class DownloadedPackSourceMixin { @Inject(method = "onReloadSuccess", at = @At("TAIL")) private void removeInactivePacksTail(CallbackInfo ci) { Modules.get().get(ServerSpoof.class).silentAcceptResourcePack = false; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/DrawContextMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/DrawContextMixin.java deleted file mode 100644 index aad3bc1784..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/DrawContextMixin.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.llamalad7.mixinextras.injector.ModifyReceiver; -import com.llamalad7.mixinextras.sugar.Local; -import meteordevelopment.meteorclient.utils.tooltip.MeteorTooltipData; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.tooltip.TooltipComponent; -import net.minecraft.item.tooltip.TooltipData; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import java.util.List; -import java.util.Optional; -import java.util.function.Consumer; - -@Mixin(value = DrawContext.class) -public abstract class DrawContextMixin { - @Inject(method = "drawTooltip(Lnet/minecraft/client/font/TextRenderer;Ljava/util/List;Ljava/util/Optional;IILnet/minecraft/util/Identifier;)V", at = @At(value = "INVOKE", target = "Ljava/util/Optional;ifPresent(Ljava/util/function/Consumer;)V", shift = At.Shift.BEFORE)) - private void onDrawTooltip(TextRenderer textRenderer, List text, Optional data, int x, int y, @Nullable Identifier texture, CallbackInfo info, @Local(ordinal = 1) List list) { - if (data.isPresent() && data.get() instanceof MeteorTooltipData meteorTooltipData) - list.add(meteorTooltipData.getComponent()); - } - - @ModifyReceiver(method = "drawTooltip(Lnet/minecraft/client/font/TextRenderer;Ljava/util/List;Ljava/util/Optional;IILnet/minecraft/util/Identifier;)V", at = @At(value = "INVOKE", target = "Ljava/util/Optional;ifPresent(Ljava/util/function/Consumer;)V")) - private Optional onDrawTooltip_modifyIfPresentReceiver(Optional data, Consumer consumer) { - if (data.isPresent() && data.get() instanceof MeteorTooltipData) return Optional.empty(); - return data; - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ElytraFeatureRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ElytraFeatureRendererMixin.java deleted file mode 100644 index 91aa29b3ff..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ElytraFeatureRendererMixin.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import meteordevelopment.meteorclient.mixininterface.IEntityRenderState; -import meteordevelopment.meteorclient.utils.network.Capes; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.entity.feature.ElytraFeatureRenderer; -import net.minecraft.client.render.entity.feature.FeatureRenderer; -import net.minecraft.client.render.entity.feature.FeatureRendererContext; -import net.minecraft.client.render.entity.model.EntityModel; -import net.minecraft.client.render.entity.state.BipedEntityRenderState; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.Identifier; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(ElytraFeatureRenderer.class) -public abstract class ElytraFeatureRendererMixin> extends FeatureRenderer { - public ElytraFeatureRendererMixin(FeatureRendererContext context) { - super(context); - } - - @ModifyExpressionValue(method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;ILnet/minecraft/client/render/entity/state/BipedEntityRenderState;FF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/feature/ElytraFeatureRenderer;getTexture(Lnet/minecraft/client/render/entity/state/BipedEntityRenderState;)Lnet/minecraft/util/Identifier;")) - private Identifier modifyCapeTexture(Identifier original, MatrixStack matrices, OrderedRenderCommandQueue entityRenderCommandQueue, int i, S state, float f, float g) { - if (((IEntityRenderState) state).meteor$getEntity() instanceof PlayerEntity player) { - Identifier id = Capes.get(player); - return id == null ? original : id; - } - - return original; - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EnchantTableRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/EnchantTableRendererMixin.java new file mode 100644 index 0000000000..ec6ed41bb6 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EnchantTableRendererMixin.java @@ -0,0 +1,27 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.NoRender; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.blockentity.EnchantTableRenderer; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import com.mojang.blaze3d.vertex.PoseStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(EnchantTableRenderer.class) +public abstract class EnchantTableRendererMixin { + @WrapWithCondition(method = "submit(Lnet/minecraft/client/renderer/blockentity/state/EnchantTableRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;IIILnet/minecraft/client/renderer/texture/TextureAtlasSprite;ILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V")) + private boolean onRenderBookModelRenderProxy(SubmitNodeCollector instance, Model model, S state, PoseStack matrixStack, RenderType renderLayer, int i, int j, int k, TextureAtlasSprite sprite, int l, ModelFeatureRenderer.CrumblingOverlay crumblingOverlayCommand) { + return !Modules.get().get(NoRender.class).noEnchTableBook(); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EnchantingTableBlockEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/EnchantingTableBlockEntityRendererMixin.java deleted file mode 100644 index dd09a45147..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EnchantingTableBlockEntityRendererMixin.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.model.Model; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.block.entity.EnchantingTableBlockEntityRenderer; -import net.minecraft.client.render.command.ModelCommandRenderer; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.util.math.MatrixStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; - -@Mixin(EnchantingTableBlockEntityRenderer.class) -public abstract class EnchantingTableBlockEntityRendererMixin { - @WrapWithCondition(method = "render(Lnet/minecraft/client/render/block/entity/state/EnchantingTableBlockEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/RenderLayer;IIILnet/minecraft/client/texture/Sprite;ILnet/minecraft/client/render/command/ModelCommandRenderer$CrumblingOverlayCommand;)V")) - private boolean onRenderBookModelRenderProxy(OrderedRenderCommandQueue instance, Model model, S state, MatrixStack matrixStack, RenderLayer renderLayer, int i, int j, int k, Sprite sprite, int l, ModelCommandRenderer.CrumblingOverlayCommand crumblingOverlayCommand) { - return !Modules.get().get(NoRender.class).noEnchTableBook(); - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalEntityRendererMixin.java deleted file mode 100644 index 9880909d4f..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalEntityRendererMixin.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.render.Chams; -import net.minecraft.client.model.Model; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.RenderLayers; -import net.minecraft.client.render.command.ModelCommandRenderer; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.entity.EndCrystalEntityRenderer; -import net.minecraft.client.render.entity.state.EndCrystalEntityRenderState; -import net.minecraft.client.render.state.CameraRenderState; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.Identifier; -import org.spongepowered.asm.mixin.*; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(EndCrystalEntityRenderer.class) -public abstract class EndCrystalEntityRendererMixin { - // Chams - - @Unique - private Chams chams; - - @Inject(method = "", at = @At("RETURN")) - private void onInit(CallbackInfo info) { - chams = Modules.get().get(Chams.class); - } - - // Chams - Texture - - @Shadow - @Final - @Mutable - private static RenderLayer END_CRYSTAL; - - @Shadow - @Final - private static Identifier TEXTURE; - - @Inject(method = "render(Lnet/minecraft/client/render/entity/state/EndCrystalEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/state/CameraRenderState;)V", at = @At("HEAD")) - private void render$renderLayer(EndCrystalEntityRenderState endCrystalEntityRenderState, MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { - END_CRYSTAL = RenderLayers.entityTranslucent((chams.isActive() && chams.crystals.get() && !chams.crystalsTexture.get()) ? Chams.BLANK : TEXTURE); - } - - // Chams - Scale - - @Inject(method = "render(Lnet/minecraft/client/render/entity/state/EndCrystalEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/MatrixStack;scale(FFF)V")) - private void render$scale(EndCrystalEntityRenderState endCrystalEntityRenderState, MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { - if (!chams.isActive() || !chams.crystals.get()) return; - - float v = chams.crystalsScale.get().floatValue(); - matrixStack.scale(v, v, v); - } - - // Chams - Color - - @WrapWithCondition(method = "render(Lnet/minecraft/client/render/entity/state/EndCrystalEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/RenderLayer;IIILnet/minecraft/client/render/command/ModelCommandRenderer$CrumblingOverlayCommand;)V")) - private boolean render$color(OrderedRenderCommandQueue instance, Model model, S state, MatrixStack matrixStack, RenderLayer renderLayer, int light, int uv, int outlineColor, ModelCommandRenderer.CrumblingOverlayCommand crumblingOverlayCommand) { - if (chams.isActive() && chams.crystals.get()) { - instance.submitModel( - model, - state, - matrixStack, - END_CRYSTAL, - light, - uv, - chams.crystalsColor.get().getPacked(), - null, - outlineColor, - null - ); - - return false; - } - - return true; - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalEntityModelMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalModelMixin.java similarity index 53% rename from src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalEntityModelMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalModelMixin.java index 8222090ad1..f65fffa556 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalEntityModelMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalModelMixin.java @@ -8,29 +8,29 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.Chams; -import net.minecraft.client.render.entity.model.EndCrystalEntityModel; -import net.minecraft.client.render.entity.state.EndCrystalEntityRenderState; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.model.object.crystal.EndCrystalModel; +import net.minecraft.client.renderer.entity.state.EndCrystalRenderState; +import net.minecraft.util.Mth; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(EndCrystalEntityModel.class) -public abstract class EndCrystalEntityModelMixin { +@Mixin(EndCrystalModel.class) +public abstract class EndCrystalModelMixin { // Chams - Bounce - @ModifyExpressionValue(method = "setAngles(Lnet/minecraft/client/render/entity/state/EndCrystalEntityRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/EndCrystalEntityRenderer;getYOffset(F)F")) - private float setAngles$bounce(float original, EndCrystalEntityRenderState state) { + @ModifyExpressionValue(method = "setupAnim(Lnet/minecraft/client/renderer/entity/state/EndCrystalRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/EndCrystalRenderer;getY(F)F")) + private float setAngles$bounce(float original, EndCrystalRenderState state) { Chams module = Modules.get().get(Chams.class); if (!module.isActive() || !module.crystals.get()) return original; - float g = MathHelper.sin(state.age * 0.2F) / 2.0F + 0.5F; + float g = Mth.sin(state.age * 0.2F) / 2.0F + 0.5F; g = (g * g + g) * 0.4F * module.crystalsBounce.get().floatValue(); return g - 1.4F; } // Chams - Rotation speed - @ModifyExpressionValue(method = "setAngles(Lnet/minecraft/client/render/entity/state/EndCrystalEntityRenderState;)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/entity/state/EndCrystalEntityRenderState;age:F", ordinal = 0)) + @ModifyExpressionValue(method = "setupAnim(Lnet/minecraft/client/renderer/entity/state/EndCrystalRenderState;)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/entity/state/EndCrystalRenderState;age:F", ordinal = 0)) private float modifySpeed(float original) { Chams module = Modules.get().get(Chams.class); if (!module.isActive() || !module.crystals.get()) return original; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalRendererMixin.java new file mode 100644 index 0000000000..5b6736de19 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EndCrystalRendererMixin.java @@ -0,0 +1,87 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.Chams; +import net.minecraft.client.model.Model; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.EndCrystalRenderer; +import net.minecraft.client.renderer.entity.state.EndCrystalRenderState; +import net.minecraft.client.renderer.state.CameraRenderState; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.resources.Identifier; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(EndCrystalRenderer.class) +public abstract class EndCrystalRendererMixin { + // Chams + + @Unique + private Chams chams; + + @Inject(method = "", at = @At("RETURN")) + private void onInit(CallbackInfo info) { + chams = Modules.get().get(Chams.class); + } + + // Chams - Texture + + @Shadow + @Final + @Mutable + private static RenderType RENDER_TYPE; + + @Shadow + @Final + private static Identifier END_CRYSTAL_LOCATION; + + @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/EndCrystalRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At("HEAD")) + private void render$renderLayer(EndCrystalRenderState endCrystalEntityRenderState, PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { + RENDER_TYPE = RenderTypes.entityTranslucent((chams.isActive() && chams.crystals.get() && !chams.crystalsTexture.get()) ? Chams.BLANK : END_CRYSTAL_LOCATION); + } + + // Chams - Scale + + @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/EndCrystalRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;scale(FFF)V")) + private void render$scale(EndCrystalRenderState endCrystalEntityRenderState, PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { + if (!chams.isActive() || !chams.crystals.get()) return; + + float v = chams.crystalsScale.get().floatValue(); + matrixStack.scale(v, v, v); + } + + // Chams - Color + + @WrapWithCondition(method = "submit(Lnet/minecraft/client/renderer/entity/state/EndCrystalRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;IIILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V")) + private boolean render$color(SubmitNodeCollector instance, Model model, S state, PoseStack matrixStack, RenderType renderLayer, int light, int uv, int outlineColor, ModelFeatureRenderer.CrumblingOverlay crumblingOverlayCommand) { + if (chams.isActive() && chams.crystals.get()) { + instance.submitModel( + model, + state, + matrixStack, + RENDER_TYPE, + light, + uv, + chams.crystalsColor.get().getPacked(), + null, + outlineColor, + null + ); + + return false; + } + + return true; + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EntityAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/EntityAccessor.java index 76260d8fcc..dc5905f90d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EntityAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EntityAccessor.java @@ -5,12 +5,12 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.entity.Entity; +import net.minecraft.world.entity.Entity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(Entity.class) public interface EntityAccessor { - @Accessor("touchingWater") + @Accessor("wasTouchingWater") void meteor$setInWater(boolean touchingWater); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EntityHitboxDebugRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/EntityHitboxDebugRendererMixin.java index a07ba6a41b..2ce15d1f39 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EntityHitboxDebugRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EntityHitboxDebugRendererMixin.java @@ -8,16 +8,16 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.combat.Hitboxes; -import net.minecraft.client.render.debug.EntityHitboxDebugRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.Box; +import net.minecraft.client.renderer.debug.EntityHitboxDebugRenderer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.AABB; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @Mixin(EntityHitboxDebugRenderer.class) public class EntityHitboxDebugRendererMixin { - @ModifyExpressionValue(method = "drawHitbox", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getBoundingBox()Lnet/minecraft/util/math/Box;", ordinal = 0)) - private Box meteor$createHitbox(Box original, Entity entity, float tickProgress, boolean inLocalServer) { + @ModifyExpressionValue(method = "showHitboxes", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getBoundingBox()Lnet/minecraft/world/phys/AABB;", ordinal = 0)) + private AABB meteor$createHitbox(AABB original, Entity entity, float tickProgress, boolean inLocalServer) { double v = Modules.get().get(Hitboxes.class).getEntityValue(entity); if (v == 0) return original; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/EntityMixin.java index de2341e2ce..52207373ed 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EntityMixin.java @@ -11,6 +11,7 @@ import meteordevelopment.meteorclient.events.entity.EntityMoveEvent; import meteordevelopment.meteorclient.events.entity.player.JumpVelocityMultiplierEvent; import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent; +import meteordevelopment.meteorclient.mixin.PlayerAccessor; import meteordevelopment.meteorclient.mixininterface.ICamera; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.combat.Hitboxes; @@ -23,14 +24,14 @@ import meteordevelopment.meteorclient.systems.modules.world.HighwayBuilder; import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.entity.fakeplayer.FakePlayerEntity; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.client.render.Camera; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityPose; -import net.minecraft.entity.MovementType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.math.Vec3d; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.client.Camera; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -41,10 +42,14 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; +// TODO(Ravel): can not resolve target class net.minecraft.world.entity.Entity +// TODO(Ravel): can not resolve target class Entity @Mixin(Entity.class) public abstract class EntityMixin { - @ModifyExpressionValue(method = "updateMovementInFluid", at = @At(value = "INVOKE", target = "Lnet/minecraft/fluid/FluidState;getVelocity(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/util/math/Vec3d;")) - private Vec3d updateMovementInFluidFluidStateGetVelocity(Vec3d vec) { + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "updateMovementInFluid", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/material/FluidState;getFlow(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/phys/Vec3;")) + private Vec3 updateMovementInFluidFluidStateGetVelocity(Vec3 vec) { if ((Object) this != mc.player) return vec; Velocity velocity = Modules.get().get(Velocity.class); @@ -55,6 +60,8 @@ private Vec3d updateMovementInFluidFluidStateGetVelocity(Vec3d vec) { return vec; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "isTouchingWater", at = @At(value = "HEAD"), cancellable = true) private void isTouchingWater(CallbackInfoReturnable info) { if ((Object) this != mc.player) return; @@ -63,6 +70,8 @@ private void isTouchingWater(CallbackInfoReturnable info) { if (Modules.get().get(NoSlow.class).fluidDrag()) info.setReturnValue(false); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "isInLava", at = @At(value = "HEAD"), cancellable = true) private void isInLava(CallbackInfoReturnable info) { if ((Object) this != mc.player) return; @@ -71,6 +80,8 @@ private void isInLava(CallbackInfoReturnable info) { if (Modules.get().get(NoSlow.class).fluidDrag()) info.setReturnValue(false); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "onBubbleColumnSurfaceCollision", at = @At("HEAD")) private void onBubbleColumnSurfaceCollision(CallbackInfo info) { if ((Object) this != mc.player) return; @@ -81,6 +92,8 @@ private void onBubbleColumnSurfaceCollision(CallbackInfo info) { } } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "onBubbleColumnCollision", at = @At("HEAD")) private void onBubbleColumnCollision(CallbackInfo info) { if ((Object) this != mc.player) return; @@ -91,7 +104,9 @@ private void onBubbleColumnCollision(CallbackInfo info) { } } - @ModifyExpressionValue(method = "updateSwimming", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;isSubmergedInWater()Z")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "updateSwimming", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;isUnderWater()Z")) private boolean isSubmergedInWater(boolean submerged) { if ((Object) this != mc.player) return submerged; @@ -100,7 +115,9 @@ private boolean isSubmergedInWater(boolean submerged) { return submerged; } - @ModifyArgs(method = "pushAwayFrom(Lnet/minecraft/entity/Entity;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;addVelocity(DDD)V")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyArgs(method = "pushAwayFrom(Lnet/minecraft/entity/Entity;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;push(DDD)V")) private void onPushAwayFrom(Args args, Entity entity) { Velocity velocity = Modules.get().get(Velocity.class); @@ -117,6 +134,8 @@ else if (entity instanceof FakePlayerEntity player && player.doNotPush) { } } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyReturnValue(method = "getJumpVelocityMultiplier", at = @At("RETURN")) private float onGetJumpVelocityMultiplier(float original) { if ((Object) this == mc.player) { @@ -127,17 +146,20 @@ private float onGetJumpVelocityMultiplier(float original) { return original; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "move", at = @At("HEAD")) - private void onMove(MovementType type, Vec3d movement, CallbackInfo info) { + private void onMove(MoverType type, Vec3 movement, CallbackInfo info) { if ((Object) this == mc.player) { MeteorClient.EVENT_BUS.post(PlayerMoveEvent.get(type, movement)); - } - else { + } else { MeteorClient.EVENT_BUS.post(EntityMoveEvent.get((Entity) (Object) this, movement)); } } - @ModifyExpressionValue(method = "getVelocityMultiplier", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/BlockState;getBlock()Lnet/minecraft/block/Block;")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "getVelocityMultiplier", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getBlock()Lnet/minecraft/world/level/block/Block;")) private Block modifyVelocityMultiplierBlock(Block original) { if ((Object) this != mc.player) return original; @@ -146,52 +168,70 @@ private Block modifyVelocityMultiplierBlock(Block original) { return original; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyReturnValue(method = "isInvisibleTo(Lnet/minecraft/entity/player/PlayerEntity;)Z", at = @At("RETURN")) private boolean isInvisibleToCanceller(boolean original) { if (!Utils.canUpdate()) return original; ESP esp = Modules.get().get(ESP.class); - if (Modules.get().get(NoRender.class).noInvisibility() || esp.isActive() && !esp.shouldSkip((Entity) (Object) this)) return false; + if (Modules.get().get(NoRender.class).noInvisibility() || esp.isActive() && !esp.shouldSkip((Entity) (Object) this)) + return false; return original; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "isGlowing", at = @At("HEAD"), cancellable = true) private void isGlowing(CallbackInfoReturnable info) { if (Modules.get().get(NoRender.class).noGlowing()) info.setReturnValue(false); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "getTargetingMargin", at = @At("HEAD"), cancellable = true) private void onGetTargetingMargin(CallbackInfoReturnable info) { double v = Modules.get().get(Hitboxes.class).getEntityValue((Entity) (Object) this); if (v != 0) info.setReturnValue((float) v); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "isInvisibleTo", at = @At("HEAD"), cancellable = true) private void onIsInvisibleTo(PlayerEntity player, CallbackInfoReturnable info) { if (player == null) info.setReturnValue(false); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "getPose", at = @At("HEAD"), cancellable = true) - private void getPoseHook(CallbackInfoReturnable info) { + private void getPoseHook(CallbackInfoReturnable info) { if ((Object) this != mc.player) return; if (Modules.get().get(ElytraFly.class).canPacketEfly()) { - info.setReturnValue(EntityPose.GLIDING); + info.setReturnValue(Pose.GLIDING); } } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyReturnValue(method = "getPose", at = @At("RETURN")) - private EntityPose modifyGetPose(EntityPose original) { + private Pose modifyGetPose(Pose original) { if ((Object) this != mc.player) return original; - if (original == EntityPose.CROUCHING && !mc.player.isSneaking() && ((PlayerEntityAccessor) mc.player).meteor$canChangeIntoPose(EntityPose.STANDING)) return EntityPose.STANDING; + if (original == Pose.CROUCHING && !mc.player.isSneaking() && ((PlayerAccessor) mc.player).meteor$canChangeIntoPose(Pose.STANDING)) + return Pose.STANDING; return original; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyReturnValue(method = "bypassesLandingEffects", at = @At("RETURN")) private boolean cancelBounce(boolean original) { return Modules.get().get(NoFall.class).cancelBounce() || original; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "changeLookDirection", at = @At("HEAD"), cancellable = true) private void updateChangeLookDirection(double cursorDeltaX, double cursorDeltaY, CallbackInfo ci) { if ((Object) this != mc.player) return; @@ -202,17 +242,16 @@ private void updateChangeLookDirection(double cursorDeltaX, double cursorDeltaY, if (freecam.isActive()) { freecam.changeLookDirection(cursorDeltaX * 0.15, cursorDeltaY * 0.15); ci.cancel(); - } - else if (Modules.get().isActive(HighwayBuilder.class)) { + } else if (Modules.get().isActive(HighwayBuilder.class)) { Camera camera = mc.gameRenderer.getCamera(); ((ICamera) camera).meteor$setRot(camera.getYaw() + cursorDeltaX * 0.15, camera.getPitch() + cursorDeltaY * 0.15); ci.cancel(); - } - else if (freeLook.cameraMode()) { + } else if (freeLook.cameraMode()) { freeLook.cameraYaw += (float) (cursorDeltaX / freeLook.sensitivity.get().floatValue()); freeLook.cameraPitch += (float) (cursorDeltaY / freeLook.sensitivity.get().floatValue()); - if (Math.abs(freeLook.cameraPitch) > 90.0F) freeLook.cameraPitch = freeLook.cameraPitch > 0.0F ? 90.0F : -90.0F; + if (Math.abs(freeLook.cameraPitch) > 90.0F) + freeLook.cameraPitch = freeLook.cameraPitch > 0.0F ? 90.0F : -90.0F; ci.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EntityRenderManagerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/EntityRenderManagerMixin.java index 4f3b176d36..09411eb715 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EntityRenderManagerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EntityRenderManagerMixin.java @@ -1,3 +1,4 @@ +// TODO(Ravel): Failed to fully resolve file: null cannot be cast to non-null type com.intellij.psi.PsiClass /* * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). * Copyright (c) Meteor Development. @@ -8,43 +9,44 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.mixininterface.IEntityRenderState; import meteordevelopment.meteorclient.utils.entity.fakeplayer.FakePlayerEntity; -import net.minecraft.client.render.Camera; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.entity.EntityRenderManager; -import net.minecraft.client.render.entity.state.EntityRenderState; -import net.minecraft.client.render.state.CameraRenderState; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.client.renderer.entity.state.EntityRenderState; +import net.minecraft.client.renderer.state.CameraRenderState; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.world.entity.Entity; +import net.minecraft.util.Mth; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(EntityRenderManager.class) -public abstract class EntityRenderManagerMixin { +@Mixin(EntityRenderDispatcher.class) +public abstract class EntityRenderDispatcherMixin { @Shadow public Camera camera; - @Inject(method = "render", at = @At("HEAD"), cancellable = true) - private void render(S renderState, CameraRenderState cameraRenderState, double d, double e, double f, MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, CallbackInfo info) { + @Inject(method = "submit", at = @At("HEAD"), cancellable = true) + private void render(S renderState, CameraRenderState cameraRenderState, double d, double e, double f, PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, CallbackInfo info) { var entity = ((IEntityRenderState) renderState).meteor$getEntity(); if (entity instanceof FakePlayerEntity player && player.hideWhenInsideCamera) { - int cX = MathHelper.floor(this.camera.getCameraPos().x); - int cY = MathHelper.floor(this.camera.getCameraPos().y); - int cZ = MathHelper.floor(this.camera.getCameraPos().z); + int cX = Mth.floor(this.camera.getCameraPos().x); + int cY = Mth.floor(this.camera.getCameraPos().y); + int cZ = Mth.floor(this.camera.getCameraPos().z); - if (cX == entity.getBlockX() && cZ == entity.getBlockZ() && (cY == entity.getBlockY() || cY == entity.getBlockY() + 1)) info.cancel(); + if (cX == entity.getBlockX() && cZ == entity.getBlockZ() && (cY == entity.getBlockY() || cY == entity.getBlockY() + 1)) + info.cancel(); } } // IEntityRenderState @ModifyExpressionValue( - method = "getAndUpdateRenderState(Lnet/minecraft/entity/Entity;F)Lnet/minecraft/client/render/entity/state/EntityRenderState;", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/entity/EntityRenderer;getAndUpdateRenderState(Lnet/minecraft/entity/Entity;F)Lnet/minecraft/client/render/entity/state/EntityRenderState;") + method = "extractEntity(Lnet/minecraft/world/entity/Entity;F)Lnet/minecraft/client/renderer/entity/state/EntityRenderState;", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/EntityRenderer;createRenderState(Lnet/minecraft/world/entity/Entity;F)Lnet/minecraft/client/renderer/entity/state/EntityRenderState;") ) private EntityRenderState getAndUpdateRenderState$setEntity(EntityRenderState state, E entity, float tickProgress) { ((IEntityRenderState) state).meteor$setEntity(entity); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EntityRenderStateMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/EntityRenderStateMixin.java index 106e1006d7..5eeca3cb25 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EntityRenderStateMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EntityRenderStateMixin.java @@ -6,12 +6,14 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.IEntityRenderState; -import net.minecraft.client.render.entity.state.EntityRenderState; -import net.minecraft.entity.Entity; +import net.minecraft.client.renderer.entity.state.EntityRenderState; +import net.minecraft.world.entity.Entity; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; +// TODO(Ravel): can not resolve target class net.minecraft.client.renderer.entity.state.EntityRenderState +// TODO(Ravel): can not resolve target class EntityRenderState @Mixin(EntityRenderState.class) public abstract class EntityRenderStateMixin implements IEntityRenderState { @Unique diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/EntityRendererMixin.java index 9a0d38244c..456f3ffdb3 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EntityRendererMixin.java @@ -14,17 +14,17 @@ import meteordevelopment.meteorclient.systems.modules.render.NoRender; import meteordevelopment.meteorclient.utils.entity.EntityUtils; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.render.Frustum; -import net.minecraft.client.render.entity.EntityRenderer; -import net.minecraft.client.render.entity.EntityRendererFactory; -import net.minecraft.client.render.entity.state.EntityRenderState; -import net.minecraft.client.render.entity.state.LivingEntityRenderState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.FallingBlockEntity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.text.Text; -import net.minecraft.world.LightType; +import net.minecraft.client.renderer.culling.Frustum; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.state.EntityRenderState; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.FallingBlockEntity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.network.chat.Component; +import net.minecraft.world.level.LightLayer; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -36,20 +36,22 @@ @Mixin(EntityRenderer.class) public abstract class EntityRendererMixin { - @Unique private ESP esp; - @Unique private NoRender noRender; + @Unique + private ESP esp; + @Unique + private NoRender noRender; // meteor is already initialised at this point @Inject(method = "", at = @At("TAIL")) - private void onInit(EntityRendererFactory.Context context, CallbackInfo ci) { + private void onInit(EntityRendererProvider.Context context, CallbackInfo ci) { esp = Modules.get().get(ESP.class); noRender = Modules.get().get(NoRender.class); } - @Inject(method = "getDisplayName", at = @At("HEAD"), cancellable = true) - private void onRenderLabel(T entity, CallbackInfoReturnable cir) { + @Inject(method = "getNameTag", at = @At("HEAD"), cancellable = true) + private void onRenderLabel(T entity, CallbackInfoReturnable cir) { if (noRender.noNametags()) cir.setReturnValue(null); - if (!(entity instanceof PlayerEntity player)) return; + if (!(entity instanceof Player player)) return; if (Modules.get().get(Nametags.class).playerNametags() && !(EntityUtils.getGameMode(player) == null && Modules.get().get(Nametags.class).excludeBots())) cir.setReturnValue(null); } @@ -60,27 +62,27 @@ private void shouldRender(T entity, Frustum frustum, double x, double y, double if (noRender.noFallingBlocks() && entity instanceof FallingBlockEntity) cir.setReturnValue(false); } - @Inject(method = "canBeCulled", at = @At("HEAD"), cancellable = true) + @Inject(method = "affectedByCulling", at = @At("HEAD"), cancellable = true) void canBeCulled(T entity, CallbackInfoReturnable cir) { if (esp.forceRender()) cir.setReturnValue(false); } - @ModifyReturnValue(method = "getSkyLight", at = @At("RETURN")) + @ModifyReturnValue(method = "getSkyLightLevel", at = @At("RETURN")) private int onGetSkyLight(int original) { - return Math.max(Modules.get().get(Fullbright.class).getLuminance(LightType.SKY), original); + return Math.max(Modules.get().get(Fullbright.class).getLuminance(LightLayer.SKY), original); } - @ModifyReturnValue(method = "getBlockLight", at = @At("RETURN")) + @ModifyReturnValue(method = "getBlockLightLevel", at = @At("RETURN")) private int onGetBlockLight(int original) { - return Math.max(Modules.get().get(Fullbright.class).getLuminance(LightType.BLOCK), original); + return Math.max(Modules.get().get(Fullbright.class).getLuminance(LightLayer.BLOCK), original); } - @ModifyExpressionValue(method = "updateRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;getLightLevel(Lnet/minecraft/world/LightType;Lnet/minecraft/util/math/BlockPos;)I")) + @ModifyExpressionValue(method = "extractRenderState", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;getLightLevel(Lnet/minecraft/world/level/LightLayer;Lnet/minecraft/core/BlockPos;)I")) private int onGetLightLevel(int original) { - return Math.max(Modules.get().get(Fullbright.class).getLuminance(LightType.BLOCK), original); + return Math.max(Modules.get().get(Fullbright.class).getLuminance(LightLayer.BLOCK), original); } - @Inject(method = "updateRenderState", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/entity/state/EntityRenderState;outlineColor:I", shift = At.Shift.AFTER, opcode = Opcodes.PUTFIELD)) + @Inject(method = "extractRenderState", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/entity/state/EntityRenderState;outlineColor:I", shift = At.Shift.AFTER, opcode = Opcodes.PUTFIELD)) private void onGetOutlineColor(T entity, S state, float tickProgress, CallbackInfo ci) { if (esp.isGlow() && !esp.shouldSkip(entity)) { Color color = esp.getColor(entity); @@ -90,7 +92,7 @@ private void onGetOutlineColor(T entity, S state, float tickProgress, CallbackIn } } - @Inject(method = "updateShadow(Lnet/minecraft/entity/Entity;Lnet/minecraft/client/render/entity/state/EntityRenderState;)V", at = @At("HEAD"), cancellable = true) + @Inject(method = "finalizeRenderState(Lnet/minecraft/world/entity/Entity;Lnet/minecraft/client/renderer/entity/state/EntityRenderState;)V", at = @At("HEAD"), cancellable = true) private void updateShadow(Entity entity, EntityRenderState renderState, CallbackInfo ci) { if (noRender.noDeadEntities() && entity instanceof LivingEntity && diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/EntitySectionAccessor.java similarity index 53% rename from src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/EntitySectionAccessor.java index 3420f41503..9a7078a5cb 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EntitySectionAccessor.java @@ -5,12 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.util.ClassInstanceMultiMap; +import net.minecraft.world.level.entity.EntitySection; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(ClientPlayerEntity.class) -public interface ClientPlayerEntityAccessor { - @Accessor("ticksSinceLastPositionPacketSent") - void meteor$setTicksSinceLastPositionPacketSent(int ticks); +@Mixin(EntitySection.class) +public interface EntitySectionAccessor { + @Accessor("storage") + ClassInstanceMultiMap meteor$getStorage(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EntitySectionStorageAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/EntitySectionStorageAccessor.java new file mode 100644 index 0000000000..9885694c7d --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/EntitySectionStorageAccessor.java @@ -0,0 +1,23 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import it.unimi.dsi.fastutil.longs.Long2ObjectMap; +import it.unimi.dsi.fastutil.longs.LongSortedSet; +import net.minecraft.world.level.entity.EntityAccess; +import net.minecraft.world.level.entity.EntitySection; +import net.minecraft.world.level.entity.EntitySectionStorage; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(EntitySectionStorage.class) +public interface EntitySectionStorageAccessor { + @Accessor("sectionIds") + LongSortedSet meteor$getSectionIds(); + + @Accessor("sections") + Long2ObjectMap> meteor$getSections(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EntityTrackingSectionAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/EntityTrackingSectionAccessor.java deleted file mode 100644 index 4edfe67779..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EntityTrackingSectionAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.util.collection.TypeFilterableList; -import net.minecraft.world.entity.EntityTrackingSection; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(EntityTrackingSection.class) -public interface EntityTrackingSectionAccessor { - @Accessor("collection") - TypeFilterableList meteor$getCollection(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ExplosionS2CPacketMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ExplosionS2CPacketMixin.java index aa42ee439f..02837b4e1f 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ExplosionS2CPacketMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ExplosionS2CPacketMixin.java @@ -6,8 +6,8 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.IExplosionS2CPacket; -import net.minecraft.network.packet.s2c.play.ExplosionS2CPacket; -import net.minecraft.util.math.Vec3d; +import net.minecraft.network.protocol.game.ClientboundExplodePacket; +import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; @@ -15,17 +15,21 @@ import java.util.Optional; +// TODO(Ravel): can not resolve target class ExplosionS2CPacket +// TODO(Ravel): can not resolve target class ExplosionS2CPacket @Mixin(ExplosionS2CPacket.class) public abstract class ExplosionS2CPacketMixin implements IExplosionS2CPacket { + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final @Mutable - private Optional playerKnockback; + private Optional playerKnockback; @Override public void meteor$setVelocityX(float velocity) { if (playerKnockback.isPresent()) { - Vec3d kb = playerKnockback.get(); + Vec3 kb = playerKnockback.get(); playerKnockback = Optional.of(new Vec3d(velocity, kb.y, kb.z)); } else { playerKnockback = Optional.of(new Vec3d(velocity, 0, 0)); @@ -35,7 +39,7 @@ public abstract class ExplosionS2CPacketMixin implements IExplosionS2CPacket { @Override public void meteor$setVelocityY(float velocity) { if (playerKnockback.isPresent()) { - Vec3d kb = playerKnockback.get(); + Vec3 kb = playerKnockback.get(); playerKnockback = Optional.of(new Vec3d(kb.x, velocity, kb.z)); } else { playerKnockback = Optional.of(new Vec3d(0, velocity, 0)); @@ -45,7 +49,7 @@ public abstract class ExplosionS2CPacketMixin implements IExplosionS2CPacket { @Override public void meteor$setVelocityZ(float velocity) { if (playerKnockback.isPresent()) { - Vec3d kb = playerKnockback.get(); + Vec3 kb = playerKnockback.get(); playerKnockback = Optional.of(new Vec3d(kb.x, kb.y, velocity)); } else { playerKnockback = Optional.of(new Vec3d(0, 0, velocity)); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FileCacheAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/FileCacheAccessor.java index 56090613a8..a7484362da 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FileCacheAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FileCacheAccessor.java @@ -5,14 +5,14 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.texture.PlayerSkinProvider; +import net.minecraft.client.resources.SkinManager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import java.nio.file.Path; -@Mixin(PlayerSkinProvider.FileCache.class) +@Mixin(SkinManager.TextureCache.class) public interface FileCacheAccessor { - @Accessor("directory") - Path meteor$getDirectory(); + @Accessor("root") + Path meteor$getRoot(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FireworkRocketEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FireworkRocketEntityMixin.java index 4e78fcef34..93ca105441 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FireworkRocketEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FireworkRocketEntityMixin.java @@ -7,9 +7,9 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.ElytraBoost; -import net.minecraft.entity.projectile.FireworkRocketEntity; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.hit.EntityHitResult; +import net.minecraft.world.entity.projectile.FireworkRocketEntity; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -22,13 +22,13 @@ public abstract class FireworkRocketEntityMixin { private int life; @Shadow - private int lifeTime; + private int lifetime; @Inject(method = "tick", at = @At("TAIL")) private void onTick(CallbackInfo info) { FireworkRocketEntity firework = ((FireworkRocketEntity) (Object) this); - if (Modules.get().get(ElytraBoost.class).isFirework(firework) && this.life > this.lifeTime) { + if (Modules.get().get(ElytraBoost.class).isFirework(firework) && this.life > this.lifetime) { firework.discard(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleMixin.java index 5491d82d29..4a239e1a26 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleMixin.java @@ -7,16 +7,16 @@ import com.llamalad7.mixinextras.sugar.Local; import it.unimi.dsi.fastutil.ints.IntList; -import net.minecraft.client.particle.FireworksSparkParticle; +import net.minecraft.client.particle.FireworkParticles; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(FireworksSparkParticle.FireworkParticle.class) +@Mixin(FireworkParticles.Starter.class) public abstract class FireworksSparkParticleMixin { - @Inject(method = "addExplosionParticle", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/FireworksSparkParticle$Explosion;setTrail(Z)V"), cancellable = true) - private void onAddExplosion(double x, double y, double z, double velocityX, double velocityY, double velocityZ, IntList colors, IntList targetColors, boolean trail, boolean flicker, CallbackInfo info, @Local FireworksSparkParticle.Explosion explosion) { + @Inject(method = "createParticle", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/particle/FireworkParticles$SparkParticle;setTrail(Z)V"), cancellable = true) + private void onAddExplosion(double x, double y, double z, double velocityX, double velocityY, double velocityZ, IntList colors, IntList targetColors, boolean trail, boolean flicker, CallbackInfo info, @Local FireworkParticles.SparkParticle explosion) { if (explosion == null) info.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleSubMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleSubMixin.java index 225501c517..75ff1c4cc9 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleSubMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FireworksSparkParticleSubMixin.java @@ -7,18 +7,18 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.particle.BillboardParticleSubmittable; -import net.minecraft.client.particle.FireworksSparkParticle; -import net.minecraft.client.render.Camera; +import net.minecraft.client.renderer.state.QuadParticleRenderState; +import net.minecraft.client.particle.FireworkParticles; +import net.minecraft.client.Camera; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(value = {FireworksSparkParticle.Explosion.class, FireworksSparkParticle.Flash.class}) +@Mixin(value = {FireworkParticles.SparkParticle.class, FireworkParticles.OverlayParticle.class}) public abstract class FireworksSparkParticleSubMixin { @Inject(method = "render", at = @At("HEAD"), cancellable = true) - private void buildExplosionGeometry(BillboardParticleSubmittable arg, Camera camera, float f, CallbackInfo ci) { + private void buildExplosionGeometry(QuadParticleRenderState arg, Camera camera, float f, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noFireworkExplosions()) ci.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FishingBobberEntityAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/FishingHookAccessor.java similarity index 66% rename from src/main/java/meteordevelopment/meteorclient/mixin/FishingBobberEntityAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/FishingHookAccessor.java index ee624853f3..bdcabca959 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FishingBobberEntityAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FishingHookAccessor.java @@ -5,12 +5,12 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.entity.projectile.FishingBobberEntity; +import net.minecraft.world.entity.projectile.FishingHook; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(FishingBobberEntity.class) -public interface FishingBobberEntityAccessor { - @Accessor("caughtFish") +@Mixin(FishingHook.class) +public interface FishingHookAccessor { + @Accessor("biting") boolean meteor$hasCaughtFish(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FishingBobberEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FishingHookMixin.java similarity index 70% rename from src/main/java/meteordevelopment/meteorclient/mixin/FishingBobberEntityMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/FishingHookMixin.java index e9b8fd287d..5cac20d29c 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FishingBobberEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FishingHookMixin.java @@ -9,17 +9,17 @@ import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.Velocity; -import net.minecraft.entity.Entity; -import net.minecraft.entity.projectile.FishingBobberEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.projectile.FishingHook; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import static meteordevelopment.meteorclient.MeteorClient.mc; -@Mixin(FishingBobberEntity.class) -public abstract class FishingBobberEntityMixin { - @WrapOperation(method = "handleStatus", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/projectile/FishingBobberEntity;pullHookedEntity(Lnet/minecraft/entity/Entity;)V")) - private void preventFishingRodPull(FishingBobberEntity instance, Entity entity, Operation original) { +@Mixin(FishingHook.class) +public abstract class FishingHookMixin { + @WrapOperation(method = "handleStatus", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/projectile/FishingHook;pullEntity(Lnet/minecraft/world/entity/Entity;)V")) + private void preventFishingRodPull(FishingHook instance, Entity entity, Operation original) { if (!instance.getEntityWorld().isClient() || entity != mc.player) original.call(instance, entity); Velocity velocity = Modules.get().get(Velocity.class); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FogRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FogRendererMixin.java index e117e5ea30..93be997d8c 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FogRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FogRendererMixin.java @@ -9,7 +9,7 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; import meteordevelopment.meteorclient.systems.modules.world.Ambience; -import net.minecraft.client.render.fog.FogRenderer; +import net.minecraft.client.renderer.fog.FogRenderer; import org.joml.Vector4f; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -17,7 +17,7 @@ @Mixin(FogRenderer.class) public abstract class FogRendererMixin { - @ModifyVariable(method = "applyFog(Ljava/nio/ByteBuffer;ILorg/joml/Vector4f;FFFFFF)V", at = @At("HEAD"), argsOnly = true) + @ModifyVariable(method = "updateBuffer(Ljava/nio/ByteBuffer;ILorg/joml/Vector4f;FFFFFF)V", at = @At("HEAD"), argsOnly = true) private Vector4f modifyFogDistance(Vector4f original) { if (Modules.get() == null) return original; @@ -29,7 +29,7 @@ private Vector4f modifyFogDistance(Vector4f original) { return original; } - @ModifyExpressionValue(method = "getFogBuffer", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/fog/FogRenderer;fogEnabled:Z")) + @ModifyExpressionValue(method = "getBuffer", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/fog/FogRenderer;fogEnabled:Z")) private boolean modifyFogEnabled(boolean original) { if (Modules.get() == null) return original; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TextRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FontMixin.java similarity index 81% rename from src/main/java/meteordevelopment/meteorclient/mixin/TextRendererMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/FontMixin.java index 35e2b80f9e..ec24f2335e 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/TextRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FontMixin.java @@ -8,13 +8,13 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.font.TextRenderer; +import net.minecraft.client.gui.Font; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(TextRenderer.class) -public abstract class TextRendererMixin { - @ModifyExpressionValue(method = "getGlyph", at = @At(value = "INVOKE", target = "Lnet/minecraft/text/Style;isObfuscated()Z")) +@Mixin(Font.class) +public abstract class FontMixin { + @ModifyExpressionValue(method = "getGlyph", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/chat/Style;isObfuscated()Z")) private boolean onRenderObfuscatedStyle(boolean original) { if (Modules.get() == null || Modules.get().get(NoRender.class) == null) { return original; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/HungerManagerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FoodDataMixin.java similarity index 74% rename from src/main/java/meteordevelopment/meteorclient/mixin/HungerManagerMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/FoodDataMixin.java index 41aa7961e2..02979f2d11 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/HungerManagerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FoodDataMixin.java @@ -8,13 +8,13 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.NoSlow; -import net.minecraft.entity.player.HungerManager; +import net.minecraft.world.food.FoodData; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(HungerManager.class) -public class HungerManagerMixin { - @ModifyExpressionValue(method = "canSprint()Z", at = @At(value = "CONSTANT", args = "floatValue=6.0f")) +@Mixin(FoodData.class) +public class FoodDataMixin { + @ModifyExpressionValue(method = "hasEnoughFood()Z", at = @At(value = "CONSTANT", args = "floatValue=6.0f")) private float onHunger(float constant) { if (Modules.get().get(NoSlow.class).hunger()) return -1; return constant; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PacketByteBufMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/FriendlyByteBufMixin.java similarity index 56% rename from src/main/java/meteordevelopment/meteorclient/mixin/PacketByteBufMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/FriendlyByteBufMixin.java index b0007ab418..86748955a4 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PacketByteBufMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/FriendlyByteBufMixin.java @@ -7,16 +7,16 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.AntiPacketKick; -import net.minecraft.nbt.NbtSizeTracker; -import net.minecraft.network.PacketByteBuf; +import net.minecraft.nbt.NbtAccounter; +import net.minecraft.network.FriendlyByteBuf; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; -@Mixin(PacketByteBuf.class) -public abstract class PacketByteBufMixin { - @ModifyArg(method = "readNbt(Lio/netty/buffer/ByteBuf;)Lnet/minecraft/nbt/NbtCompound;", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketByteBuf;readNbt(Lio/netty/buffer/ByteBuf;Lnet/minecraft/nbt/NbtSizeTracker;)Lnet/minecraft/nbt/NbtElement;")) - private static NbtSizeTracker xlPackets(NbtSizeTracker sizeTracker) { - return Modules.get().isActive(AntiPacketKick.class) ? NbtSizeTracker.ofUnlimitedBytes() : sizeTracker; +@Mixin(FriendlyByteBuf.class) +public abstract class FriendlyByteBufMixin { + @ModifyArg(method = "readNbt(Lio/netty/buffer/ByteBuf;)Lnet/minecraft/nbt/CompoundTag;", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/FriendlyByteBuf;readNbt(Lio/netty/buffer/ByteBuf;Lnet/minecraft/nbt/NbtAccounter;)Lnet/minecraft/nbt/Tag;")) + private static NbtAccounter xlPackets(NbtAccounter sizeTracker) { + return Modules.get().isActive(AntiPacketKick.class) ? NbtAccounter.ofUnlimitedBytes() : sizeTracker; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java index 4d5315632e..8608fad2d9 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java @@ -28,21 +28,21 @@ import meteordevelopment.meteorclient.utils.render.CustomBannerGuiElementRenderer; import meteordevelopment.meteorclient.utils.render.NametagUtils; import meteordevelopment.meteorclient.utils.render.RenderUtils; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.render.GuiRenderer; -import net.minecraft.client.gui.render.SpecialGuiElementRenderer; +import net.minecraft.client.gui.render.pip.PictureInPictureRenderer; import net.minecraft.client.gui.render.state.GuiRenderState; -import net.minecraft.client.render.BufferBuilderStorage; -import net.minecraft.client.render.Camera; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.RenderTickCounter; -import net.minecraft.client.render.fog.FogRenderer; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.profiler.Profilers; +import net.minecraft.client.renderer.RenderBuffers; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.renderer.fog.FogRenderer; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.util.profiling.Profiler; import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -56,18 +56,28 @@ import java.util.ArrayList; import java.util.List; +// TODO(Ravel): can not resolve target class net.minecraft.client.renderer.GameRenderer +// TODO(Ravel): can not resolve target class GameRenderer @Mixin(GameRenderer.class) public abstract class GameRendererMixin implements IGameRenderer { + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final - private MinecraftClient client; + private Minecraft client; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow public abstract void updateCrosshairTarget(float tickDelta); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow public abstract void reset(); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final private Camera camera; @@ -79,48 +89,68 @@ public abstract class GameRendererMixin implements IGameRenderer { private Renderer3D depthRenderer; @Unique - private final MatrixStack matrices = new MatrixStack(); + private final PoseStack matrices = new MatrixStack(); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow - protected abstract void bobView(MatrixStack matrices, float tickDelta); + protected abstract void bobView(PoseStack matrices, float tickDelta); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow - protected abstract void tiltViewWhenHurt(MatrixStack matrices, float tickDelta); + protected abstract void tiltViewWhenHurt(PoseStack matrices, float tickDelta); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final - private BufferBuilderStorage buffers; + private RenderBuffers buffers; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final private GuiRenderer guiRenderer; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final private FogRenderer fogRenderer; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final GuiRenderState guiState; - @ModifyArg(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/render/GuiRenderer;(Lnet/minecraft/client/gui/render/state/GuiRenderState;Lnet/minecraft/client/render/VertexConsumerProvider$Immediate;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/command/RenderDispatcher;Ljava/util/List;)V")) - private List> meteor$addSpecialRenderers(List> list) { + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyArg(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/render/GuiRenderer;(Lnet/minecraft/client/gui/render/state/GuiRenderState;Lnet/minecraft/client/renderer/MultiBufferSource$BufferSource;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/feature/FeatureRenderDispatcher;Ljava/util/List;)V")) + private List> meteor$addSpecialRenderers(List> list) { list = new ArrayList<>(list); list.add(new CustomBannerGuiElementRenderer(buffers.getEntityVertexConsumers(), client.getAtlasManager())); return List.of(list.toArray(new SpecialGuiElementRenderer[0])); } - @Inject(method = "renderWorld", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", args = {"ldc=hand"})) - private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Local(ordinal = 0) Matrix4f projection, @Local(ordinal = 1) Matrix4f position, @Local(ordinal = 0) float tickDelta, @Local MatrixStack matrixStack) { + // TODO(Ravel): @At.args is not supported +// TODO(Ravel): no target class +// TODO(Ravel): @At.args is not supported +// TODO(Ravel): no target class + @Inject(method = "renderWorld", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/util/profiling/ProfilerFiller;popPush(Ljava/lang/String;)V", args = {"ldc=hand"})) + private void onRenderWorld(DeltaTracker tickCounter, CallbackInfo ci, @Local(ordinal = 0) Matrix4f projection, @Local(ordinal = 1) Matrix4f position, @Local(ordinal = 0) float tickDelta, @Local PoseStack matrixStack) { if (!Utils.canUpdate()) return; - Profilers.get().push(MeteorClient.MOD_ID + "_render"); + Profiler.get().push(MeteorClient.MOD_ID + "_render"); // Create renderer and event - if (renderer == null) renderer = new Renderer3D(MeteorRenderPipelines.WORLD_COLORED_LINES, MeteorRenderPipelines.WORLD_COLORED); - if (depthRenderer == null) depthRenderer = new Renderer3D(MeteorRenderPipelines.WORLD_COLORED_LINES_DEPTH, MeteorRenderPipelines.WORLD_COLORED_DEPTH); + if (renderer == null) + renderer = new Renderer3D(MeteorRenderPipelines.WORLD_COLORED_LINES, MeteorRenderPipelines.WORLD_COLORED); + if (depthRenderer == null) + depthRenderer = new Renderer3D(MeteorRenderPipelines.WORLD_COLORED_LINES_DEPTH, MeteorRenderPipelines.WORLD_COLORED_DEPTH); Render3DEvent event = Render3DEvent.get(matrixStack, renderer, depthRenderer, tickDelta, camera.getCameraPos().x, camera.getCameraPos().y, camera.getCameraPos().z); // Update model view matrix @@ -154,16 +184,20 @@ private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Loca RenderSystem.getModelViewStack().popMatrix(); - Profilers.get().pop(); + Profiler.get().pop(); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "renderWorld", at = @At("TAIL")) private void onRenderWorldTail(CallbackInfo info) { MeteorClient.EVENT_BUS.post(RenderAfterWorldEvent.get()); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/render/GuiRenderer;render(Lcom/mojang/blaze3d/buffers/GpuBufferSlice;)V", shift = At.Shift.AFTER)) - private void onRenderGui(RenderTickCounter tickCounter, boolean tick, CallbackInfo info) { + private void onRenderGui(DeltaTracker tickCounter, boolean tick, CallbackInfo info) { if (client.currentScreen instanceof WidgetScreen widgetScreen) { guiState.clear(); var mouseX = (int) client.mouse.getScaledX(client.getWindow()); @@ -178,6 +212,8 @@ private void onRenderGui(RenderTickCounter tickCounter, boolean tick, CallbackIn } } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "showFloatingItem", at = @At("HEAD"), cancellable = true) private void onShowFloatingItem(ItemStack floatingItem, CallbackInfo info) { if (floatingItem.getItem() == Items.TOTEM_OF_UNDYING && Modules.get().get(NoRender.class).noTotemAnimation()) { @@ -185,11 +221,15 @@ private void onShowFloatingItem(ItemStack floatingItem, CallbackInfo info) { } } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyExpressionValue(method = "renderWorld", at = @At(value = "INVOKE", target = "Ljava/lang/Math;max(FF)F", ordinal = 0)) private float applyCameraTransformationsMathHelperLerpProxy(float original) { return Modules.get().get(NoRender.class).noNausea() ? 0 : original; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyReturnValue(method = "getFov", at = @At("RETURN")) private float modifyFov(float original) { return MeteorClient.EVENT_BUS.post(GetFovEvent.get(original)).fov; @@ -200,6 +240,8 @@ private float modifyFov(float original) { @Unique private boolean freecamSet = false; + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "updateCrosshairTarget", at = @At("HEAD"), cancellable = true) private void updateTargetedEntityInvoke(float tickDelta, CallbackInfo info) { Freecam freecam = Modules.get().get(Freecam.class); @@ -249,6 +291,8 @@ private void updateTargetedEntityInvoke(float tickDelta, CallbackInfo info) { } } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "renderHand", at = @At("HEAD"), cancellable = true) private void renderHand(float tickProgress, boolean sleeping, Matrix4f positionMatrix, CallbackInfo ci) { if (!Modules.get().get(Freecam.class).renderHands() || @@ -258,7 +302,7 @@ private void renderHand(float tickProgress, boolean sleeping, Matrix4f positionM @Override public void meteor$flushGuiState() { - guiRenderer.render(fogRenderer.getFogBuffer(FogRenderer.FogType.NONE)); + guiRenderer.render(fogRenderer.getFogBuffer(FogRenderer.FogMode.NONE)); guiRenderer.incrementFrame(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GlCommandEncoderMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GlCommandEncoderMixin.java index b81810b736..fbfc1eda97 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/GlCommandEncoderMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GlCommandEncoderMixin.java @@ -9,8 +9,8 @@ import com.mojang.blaze3d.systems.RenderPass; import meteordevelopment.meteorclient.mixininterface.IGpuDevice; import meteordevelopment.meteorclient.mixininterface.IRenderPipeline; -import net.minecraft.client.gl.GlBackend; -import net.minecraft.client.gl.GlCommandEncoder; +import com.mojang.blaze3d.opengl.GlDevice; +import com.mojang.blaze3d.opengl.GlCommandEncoder; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -25,21 +25,21 @@ public abstract class GlCommandEncoderMixin { @Shadow @Final - private GlBackend backend; + private GlDevice device; + // TODO(Ravel): target method createRenderPass with the signature not found @SuppressWarnings("deprecation") @Inject(method = "createRenderPass(Ljava/util/function/Supplier;Lcom/mojang/blaze3d/textures/GpuTextureView;Ljava/util/OptionalInt;Lcom/mojang/blaze3d/textures/GpuTextureView;Ljava/util/OptionalDouble;)Lcom/mojang/blaze3d/systems/RenderPass;", at = @At("RETURN")) private void createRenderPass$iGpuDevice(CallbackInfoReturnable info) { - ((IGpuDevice) backend).meteor$onCreateRenderPass(info.getReturnValue()); + ((IGpuDevice) device).meteor$onCreateRenderPass(info.getReturnValue()); } - @Inject(method = "setPipelineAndApplyState", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/opengl/GlStateManager;_polygonMode(II)V")) + @Inject(method = "applyPipelineState", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/opengl/GlStateManager;_polygonMode(II)V")) private void setPipelineAndApplyState$lineSmooth(RenderPipeline pipeline, CallbackInfo info) { if (((IRenderPipeline) pipeline).meteor$getLineSmooth()) { glEnable(GL_LINE_SMOOTH); glLineWidth(1); - } - else { + } else { glDisable(GL_LINE_SMOOTH); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GlBackendMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GlDeviceMixin.java similarity index 90% rename from src/main/java/meteordevelopment/meteorclient/mixin/GlBackendMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/GlDeviceMixin.java index 0317498a2b..bb53553d90 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/GlBackendMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GlDeviceMixin.java @@ -7,12 +7,12 @@ import com.mojang.blaze3d.systems.RenderPass; import meteordevelopment.meteorclient.mixininterface.IGpuDevice; -import net.minecraft.client.gl.GlBackend; +import com.mojang.blaze3d.opengl.GlDevice; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; -@Mixin(GlBackend.class) -public abstract class GlBackendMixin implements IGpuDevice { +@Mixin(GlDevice.class) +public abstract class GlDeviceMixin implements IGpuDevice { @Unique private int x, y, width, height; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/DrawContextAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/GuiGraphicsAccessor.java similarity index 62% rename from src/main/java/meteordevelopment/meteorclient/mixin/DrawContextAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/GuiGraphicsAccessor.java index e71a64a6b7..bd9fc7f115 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/DrawContextAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GuiGraphicsAccessor.java @@ -5,16 +5,16 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.render.state.GuiRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(DrawContext.class) -public interface DrawContextAccessor { - @Accessor("state") - GuiRenderState getState(); +@Mixin(GuiGraphics.class) +public interface GuiGraphicsAccessor { + @Accessor("guiRenderState") + GuiRenderState getGuiRenderState(); @Accessor("scissorStack") - DrawContext.ScissorStack getScissorStack(); + GuiGraphics.ScissorStack getScissorStack(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GuiGraphicsMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GuiGraphicsMixin.java new file mode 100644 index 0000000000..dd5b72bd34 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GuiGraphicsMixin.java @@ -0,0 +1,40 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.ModifyReceiver; +import com.llamalad7.mixinextras.sugar.Local; +import meteordevelopment.meteorclient.utils.tooltip.MeteorTooltipData; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; +import net.minecraft.world.inventory.tooltip.TooltipComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.List; +import java.util.Optional; +import java.util.function.Consumer; + +@Mixin(value = GuiGraphics.class) +public abstract class GuiGraphicsMixin { + @Inject(method = "setTooltipForNextFrame(Lnet/minecraft/client/gui/Font;Ljava/util/List;Ljava/util/Optional;IILnet/minecraft/resources/Identifier;)V", at = @At(value = "INVOKE", target = "Ljava/util/Optional;ifPresent(Ljava/util/function/Consumer;)V", shift = At.Shift.BEFORE)) + private void onDrawTooltip(Font textRenderer, List text, Optional data, int x, int y, @Nullable Identifier texture, CallbackInfo info, @Local(ordinal = 1) List list) { + if (data.isPresent() && data.get() instanceof MeteorTooltipData meteorTooltipData) + list.add(meteorTooltipData.getComponent()); + } + + @ModifyReceiver(method = "setTooltipForNextFrame(Lnet/minecraft/client/gui/Font;Ljava/util/List;Ljava/util/Optional;IILnet/minecraft/resources/Identifier;)V", at = @At(value = "INVOKE", target = "Ljava/util/Optional;ifPresent(Ljava/util/function/Consumer;)V")) + private Optional onDrawTooltip_modifyIfPresentReceiver(Optional data, Consumer consumer) { + if (data.isPresent() && data.get() instanceof MeteorTooltipData) return Optional.empty(); + return data; + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/InGameHudMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GuiMixin.java similarity index 58% rename from src/main/java/meteordevelopment/meteorclient/mixin/InGameHudMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/GuiMixin.java index ed64733477..9859c956de 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/InGameHudMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GuiMixin.java @@ -14,12 +14,12 @@ import meteordevelopment.meteorclient.systems.modules.render.Freecam; import meteordevelopment.meteorclient.systems.modules.render.NoRender; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.hud.InGameHud; -import net.minecraft.client.render.RenderTickCounter; -import net.minecraft.entity.Entity; -import net.minecraft.scoreboard.ScoreboardObjective; -import net.minecraft.util.profiler.Profilers; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.DeltaTracker; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.scores.Objective; +import net.minecraft.util.profiling.Profiler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -30,16 +30,17 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; -@Mixin(InGameHud.class) -public abstract class InGameHudMixin { - @Shadow public abstract void clear(); +@Mixin(Gui.class) +public abstract class GuiMixin { + @Shadow + public abstract void onDisconnected(); @Inject(method = "render", at = @At("TAIL")) - private void onRender(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) { + private void onRender(GuiGraphics context, DeltaTracker tickCounter, CallbackInfo ci) { ((IGameRenderer) mc.gameRenderer).meteor$flushGuiState(); context.createNewRootLayer(); - Profilers.get().push(MeteorClient.MOD_ID + "_render_2d"); + Profiler.get().push(MeteorClient.MOD_ID + "_render_2d"); Utils.unscaledProjection(); @@ -48,78 +49,78 @@ private void onRender(DrawContext context, RenderTickCounter tickCounter, Callba context.createNewRootLayer(); Utils.scaledProjection(); - Profilers.get().pop(); + Profiler.get().pop(); } - @Inject(method = "renderStatusEffectOverlay", at = @At("HEAD"), cancellable = true) + @Inject(method = "renderEffects", at = @At("HEAD"), cancellable = true) private void onRenderStatusEffectOverlay(CallbackInfo info) { if (Modules.get().get(NoRender.class).noPotionIcons()) info.cancel(); } @Inject(method = "renderPortalOverlay", at = @At("HEAD"), cancellable = true) - private void onRenderPortalOverlay(DrawContext context, float nauseaStrength, CallbackInfo ci) { + private void onRenderPortalOverlay(GuiGraphics context, float nauseaStrength, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noPortalOverlay()) ci.cancel(); } - @ModifyArgs(method = "renderMiscOverlays", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/InGameHud;renderOverlay(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/util/Identifier;F)V", ordinal = 0)) + @ModifyArgs(method = "renderCameraOverlays", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;renderTextureOverlay(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/resources/Identifier;F)V", ordinal = 0)) private void onRenderPumpkinOverlay(Args args) { if (Modules.get().get(NoRender.class).noPumpkinOverlay()) args.set(2, 0f); } - @ModifyArgs(method = "renderMiscOverlays", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/InGameHud;renderOverlay(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/util/Identifier;F)V", ordinal = 1)) + @ModifyArgs(method = "renderCameraOverlays", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;renderTextureOverlay(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/resources/Identifier;F)V", ordinal = 1)) private void onRenderPowderedSnowOverlay(Args args) { if (Modules.get().get(NoRender.class).noPowderedSnowOverlay()) args.set(2, 0f); } - @Inject(method = "renderVignetteOverlay", at = @At("HEAD"), cancellable = true) - private void onRenderVignetteOverlay(DrawContext context, Entity entity, CallbackInfo ci) { + @Inject(method = "renderVignette", at = @At("HEAD"), cancellable = true) + private void onRenderVignetteOverlay(GuiGraphics context, Entity entity, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noVignette()) ci.cancel(); } - @Inject(method = "renderScoreboardSidebar(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/scoreboard/ScoreboardObjective;)V", at = @At("HEAD"), cancellable = true) - private void onRenderScoreboardSidebar(DrawContext context, ScoreboardObjective objective, CallbackInfo ci) { + @Inject(method = "displayScoreboardSidebar(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/scores/Objective;)V", at = @At("HEAD"), cancellable = true) + private void onRenderScoreboardSidebar(GuiGraphics context, Objective objective, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noScoreboard()) ci.cancel(); } - @Inject(method = "renderScoreboardSidebar(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/client/render/RenderTickCounter;)V", at = @At("HEAD"), cancellable = true) - private void onRenderScoreboardSidebar(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) { + @Inject(method = "renderScoreboardSidebar(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/DeltaTracker;)V", at = @At("HEAD"), cancellable = true) + private void onRenderScoreboardSidebar(GuiGraphics context, DeltaTracker tickCounter, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noScoreboard()) ci.cancel(); } @Inject(method = "renderSpyglassOverlay", at = @At("HEAD"), cancellable = true) - private void onRenderSpyglassOverlay(DrawContext context, float scale, CallbackInfo ci) { + private void onRenderSpyglassOverlay(GuiGraphics context, float scale, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noSpyglassOverlay()) ci.cancel(); } - @ModifyExpressionValue(method = "renderCrosshair", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/option/Perspective;isFirstPerson()Z")) + @ModifyExpressionValue(method = "renderCrosshair", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/CameraType;isFirstPerson()Z")) private boolean alwaysRenderCrosshairInFreecam(boolean firstPerson) { return Modules.get().isActive(Freecam.class) || firstPerson; } @Inject(method = "renderCrosshair", at = @At("HEAD"), cancellable = true) - private void onRenderCrosshair(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) { + private void onRenderCrosshair(GuiGraphics context, DeltaTracker tickCounter, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noCrosshair()) ci.cancel(); } - @Inject(method = "renderTitleAndSubtitle", at = @At("HEAD"), cancellable = true) - private void onRenderTitle(DrawContext context, RenderTickCounter tickCounter, CallbackInfo ci) { + @Inject(method = "renderTitle", at = @At("HEAD"), cancellable = true) + private void onRenderTitle(GuiGraphics context, DeltaTracker tickCounter, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noTitle()) ci.cancel(); } - @Inject(method = "renderHeldItemTooltip", at = @At("HEAD"), cancellable = true) - private void onRenderHeldItemTooltip(DrawContext context, CallbackInfo ci) { + @Inject(method = "renderSelectedItemName", at = @At("HEAD"), cancellable = true) + private void onRenderHeldItemTooltip(GuiGraphics context, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noHeldItemName()) ci.cancel(); } - @Inject(method = "clear", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;clear(Z)V"), cancellable = true) + @Inject(method = "onDisconnected", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/ChatComponent;clearMessages(Z)V"), cancellable = true) private void onClear(CallbackInfo info) { if (Modules.get().get(BetterChat.class).keepHistory()) { info.cancel(); } } - @Inject(method = "renderNauseaOverlay", at = @At("HEAD"), cancellable = true) - private void onRenderNausea(DrawContext context, float distortionStrength, CallbackInfo ci) { + @Inject(method = "renderConfusionOverlay", at = @At("HEAD"), cancellable = true) + private void onRenderNausea(GuiGraphics context, float distortionStrength, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noNausea()) ci.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/HandledScreenAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/HandledScreenAccessor.java deleted file mode 100644 index f2e1c6e378..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/HandledScreenAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.screen.slot.Slot; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(HandledScreen.class) -public interface HandledScreenAccessor { - @Accessor("focusedSlot") - Slot meteor$getFocusedSlot(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/HeadFeatureRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/HeadFeatureRendererMixin.java deleted file mode 100644 index fb0c4badd7..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/HeadFeatureRendererMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.entity.feature.HeadFeatureRenderer; -import net.minecraft.client.render.entity.model.EntityModel; -import net.minecraft.client.render.entity.model.ModelWithHead; -import net.minecraft.client.render.entity.state.LivingEntityRenderState; -import net.minecraft.client.render.entity.state.PlayerEntityRenderState; -import net.minecraft.client.util.math.MatrixStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(HeadFeatureRenderer.class) -public abstract class HeadFeatureRendererMixin & ModelWithHead> { - @Inject(method = "render(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;ILnet/minecraft/client/render/entity/state/LivingEntityRenderState;FF)V", at = @At("HEAD"), cancellable = true) - private void onRender(MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, int i, S livingEntityRenderState, float f, float g, CallbackInfo ci) { - if (livingEntityRenderState instanceof PlayerEntityRenderState && Modules.get().get(NoRender.class).noArmor()) ci.cancel(); - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/HeldItemRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/HeldItemRendererMixin.java deleted file mode 100644 index 094cf3033d..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/HeldItemRendererMixin.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.google.common.base.MoreObjects; -import com.llamalad7.mixinextras.injector.ModifyReturnValue; -import meteordevelopment.meteorclient.MeteorClient; -import meteordevelopment.meteorclient.events.render.ArmRenderEvent; -import meteordevelopment.meteorclient.events.render.HeldItemRendererEvent; -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.render.HandView; -import net.minecraft.client.network.AbstractClientPlayerEntity; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.item.HeldItemRenderer; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Arm; -import net.minecraft.util.Hand; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.ModifyArg; -import org.spongepowered.asm.mixin.injection.ModifyVariable; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import static meteordevelopment.meteorclient.MeteorClient.mc; - -@Mixin(HeldItemRenderer.class) -public abstract class HeldItemRendererMixin { - @Shadow - private float equipProgressMainHand; - - @Shadow - private float equipProgressOffHand; - - @Shadow - private ItemStack mainHand; - - @Shadow - private ItemStack offHand; - - @Shadow - protected abstract boolean shouldSkipHandAnimationOnSwap(ItemStack from, ItemStack to); - - @ModifyVariable(method = "renderItem(FLnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/network/ClientPlayerEntity;I)V", at = @At(value = "STORE", ordinal = 0), index = 6) - private float modifySwing(float swingProgress) { - HandView module = Modules.get().get(HandView.class); - Hand hand = MoreObjects.firstNonNull(mc.player.preferredHand, Hand.MAIN_HAND); - - if (module.isActive()) { - if (hand == Hand.OFF_HAND && !mc.player.getOffHandStack().isEmpty()) { - return swingProgress + module.offSwing.get().floatValue(); - } - if (hand == Hand.MAIN_HAND && !mc.player.getMainHandStack().isEmpty()) { - return swingProgress + module.mainSwing.get().floatValue(); - } - } - - return swingProgress; - } - - @ModifyReturnValue(method = "shouldSkipHandAnimationOnSwap", at = @At("RETURN")) - private boolean modifySkipSwapAnimation(boolean original) { - return original || Modules.get().get(HandView.class).skipSwapping(); - } - - @ModifyArg(method = "updateHeldItems", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(FFF)F", ordinal = 2), index = 0) - private float modifyEquipProgressMainhand(float value) { - float f = mc.player.getHandEquippingProgress(1f); - float modified = Modules.get().get(HandView.class).oldAnimations() ? 1 : f * f * f; - - return (shouldSkipHandAnimationOnSwap(mainHand, mc.player.getMainHandStack()) ? modified : 0) - equipProgressMainHand; - } - - @ModifyArg(method = "updateHeldItems", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;clamp(FFF)F", ordinal = 3), index = 0) - private float modifyEquipProgressOffhand(float value) { - return (shouldSkipHandAnimationOnSwap(offHand, mc.player.getOffHandStack()) ? 1 : 0) - equipProgressOffHand; - } - - @Inject(method = "renderFirstPersonItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/HeldItemRenderer;renderItem(Lnet/minecraft/entity/LivingEntity;Lnet/minecraft/item/ItemStack;Lnet/minecraft/item/ItemDisplayContext;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;I)V", shift = At.Shift.BEFORE)) - private void onRenderItem(AbstractClientPlayerEntity player, float tickProgress, float pitch, Hand hand, float swingProgress, ItemStack item, float equipProgress, MatrixStack matrices, OrderedRenderCommandQueue orderedRenderCommandQueue, int light, CallbackInfo ci) { - MeteorClient.EVENT_BUS.post(HeldItemRendererEvent.get(hand, matrices)); - } - - @Inject(method = "renderFirstPersonItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/HeldItemRenderer;renderArmHoldingItem(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;IFFLnet/minecraft/util/Arm;)V")) - private void onRenderArm(AbstractClientPlayerEntity player, float tickProgress, float pitch, Hand hand, float swingProgress, ItemStack item, float equipProgress, MatrixStack matrices, OrderedRenderCommandQueue orderedRenderCommandQueue, int light, CallbackInfo ci) { - MeteorClient.EVENT_BUS.post(ArmRenderEvent.get(hand, matrices)); - } - - @Inject(method = "applyEatOrDrinkTransformation", at = @At(value = "INVOKE", target = "Ljava/lang/Math;pow(DD)D", shift = At.Shift.BEFORE), cancellable = true) - private void cancelTransformations(MatrixStack matrices, float tickDelta, Arm arm, ItemStack stack, PlayerEntity player, CallbackInfo ci) { - if (Modules.get().get(HandView.class).disableFoodAnimation()) ci.cancel(); - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/HumanoidArmorLayerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/HumanoidArmorLayerMixin.java new file mode 100644 index 0000000000..64d2e825a8 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/HumanoidArmorLayerMixin.java @@ -0,0 +1,28 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.NoRender; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.renderer.entity.state.HumanoidRenderState; +import net.minecraft.client.renderer.entity.state.AvatarRenderState; +import com.mojang.blaze3d.vertex.PoseStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(HumanoidArmorLayer.class) +public abstract class HumanoidArmorLayerMixin, A extends HumanoidModel> { + @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/HumanoidRenderState;FF)V", at = @At("HEAD"), cancellable = true) + private void onRender(PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, int i, S bipedEntityRenderState, float f, float g, CallbackInfo ci) { + if (bipedEntityRenderState instanceof AvatarRenderState && Modules.get().get(NoRender.class).noArmor()) + ci.cancel(); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/InGameOverlayRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/InGameOverlayRendererMixin.java deleted file mode 100644 index 9b9bb7eed1..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/InGameOverlayRendererMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.hud.InGameOverlayRenderer; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.util.math.MatrixStack; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -@Mixin(InGameOverlayRenderer.class) -public abstract class InGameOverlayRendererMixin { - @Inject(method = "renderFireOverlay", at = @At("HEAD"), cancellable = true) - private static void onRenderFireOverlay(MatrixStack matrices, VertexConsumerProvider vertexConsumers, Sprite sprite, CallbackInfo ci) { - if (Modules.get().get(NoRender.class).noFireOverlay()) ci.cancel(); - } - - @Inject(method = "renderUnderwaterOverlay", at = @At("HEAD"), cancellable = true) - private static void onRenderUnderwaterOverlay(MinecraftClient client, MatrixStack matrices, VertexConsumerProvider vertexConsumers, CallbackInfo ci) { - if (Modules.get().get(NoRender.class).noLiquidOverlay()) ci.cancel(); - } - - @Inject(method = "renderInWallOverlay", at = @At("HEAD"), cancellable = true) - private static void render(Sprite sprite, MatrixStack matrices, VertexConsumerProvider vertexConsumers, CallbackInfo ci) { - if (Modules.get().get(NoRender.class).noInWallOverlay()) ci.cancel(); - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockRenderLayersMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemBlockRenderTypesMixin.java similarity index 61% rename from src/main/java/meteordevelopment/meteorclient/mixin/BlockRenderLayersMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ItemBlockRenderTypesMixin.java index e92adb7186..fda586c6f8 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockRenderLayersMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemBlockRenderTypesMixin.java @@ -8,39 +8,37 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.Xray; import meteordevelopment.meteorclient.systems.modules.world.Ambience; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.BlockRenderLayer; -import net.minecraft.client.render.BlockRenderLayers; -import net.minecraft.fluid.FluidState; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.chunk.ChunkSectionLayer; +import net.minecraft.client.renderer.ItemBlockRenderTypes; +import net.minecraft.world.level.material.FluidState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(BlockRenderLayers.class) -public class BlockRenderLayersMixin { - @Inject(method = "getBlockLayer", at = @At("HEAD"), cancellable = true) - private static void onGetBlockLayer(BlockState state, CallbackInfoReturnable cir) { +@Mixin(ItemBlockRenderTypes.class) +public class ItemBlockRenderTypesMixin { + @Inject(method = "getChunkRenderType", at = @At("HEAD"), cancellable = true) + private static void onGetBlockLayer(BlockState state, CallbackInfoReturnable cir) { if (Modules.get() == null) return; int alpha = Xray.getAlpha(state, null); - if (alpha > 0 && alpha < 255) cir.setReturnValue(BlockRenderLayer.TRANSLUCENT); + if (alpha > 0 && alpha < 255) cir.setReturnValue(ChunkSectionLayer.TRANSLUCENT); } - @Inject(method = "getFluidLayer", at = @At("HEAD"), cancellable = true) - private static void onGetFluidLayer(FluidState state, CallbackInfoReturnable cir) { + @Inject(method = "getRenderLayer", at = @At("HEAD"), cancellable = true) + private static void onGetFluidLayer(FluidState state, CallbackInfoReturnable cir) { if (Modules.get() == null) return; int alpha = Xray.getAlpha(state.getBlockState(), null); if (alpha > 0 && alpha < 255) { - cir.setReturnValue(BlockRenderLayer.TRANSLUCENT); - } - - else { + cir.setReturnValue(ChunkSectionLayer.TRANSLUCENT); + } else { Ambience ambience = Modules.get().get(Ambience.class); int a = ambience.lavaColor.get().a; if (ambience.isActive() && ambience.customLavaColor.get() && a > 0 && a < 255) { - cir.setReturnValue(BlockRenderLayer.TRANSLUCENT); + cir.setReturnValue(ChunkSectionLayer.TRANSLUCENT); } } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemContainerContentsAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemContainerContentsAccessor.java new file mode 100644 index 0000000000..58066ce3f4 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemContainerContentsAccessor.java @@ -0,0 +1,18 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.world.item.component.ItemContainerContents; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.NonNullList; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ItemContainerContents.class) +public interface ItemContainerContentsAccessor { + @Accessor("items") + NonNullList meteor$getItems(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ContainerComponentMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemContainerContentsMixin.java similarity index 64% rename from src/main/java/meteordevelopment/meteorclient/mixin/ContainerComponentMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ItemContainerContentsMixin.java index bb53dcc50b..29882410f1 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ContainerComponentMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemContainerContentsMixin.java @@ -7,13 +7,13 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.BetterTooltips; -import net.minecraft.component.ComponentsAccess; -import net.minecraft.component.type.ContainerComponent; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.tooltip.TooltipType; -import net.minecraft.text.Text; -import net.minecraft.util.collection.DefaultedList; +import net.minecraft.core.component.DataComponentGetter; +import net.minecraft.world.item.component.ItemContainerContents; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.network.chat.Component; +import net.minecraft.core.NonNullList; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -23,14 +23,14 @@ import java.util.function.Consumer; -@Mixin(ContainerComponent.class) -public abstract class ContainerComponentMixin { +@Mixin(ItemContainerContents.class) +public abstract class ItemContainerContentsMixin { @Shadow @Final - private DefaultedList stacks; + private NonNullList items; @Inject(method = "appendTooltip", at = @At("HEAD"), cancellable = true) - private void onAppendTooltip(Item.TooltipContext context, Consumer textConsumer, TooltipType type, ComponentsAccess components, CallbackInfo ci) { + private void onAppendTooltip(Item.TooltipContext context, Consumer textConsumer, TooltipFlag type, DataComponentGetter components, CallbackInfo ci) { if (Modules.get() == null) return; BetterTooltips tooltips = Modules.get().get(BetterTooltips.class); @@ -38,7 +38,7 @@ private void onAppendTooltip(Item.TooltipContext context, Consumer textCon if (tooltips.previewShulkers()) ci.cancel(); else if (tooltips.shulkerCompactTooltip()) { ci.cancel(); - tooltips.applyCompactShulkerTooltip(stacks, textConsumer); + tooltips.applyCompactShulkerTooltip(items, textConsumer); } } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemEntityRendererMixin.java index 871a091668..ac220729a3 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ItemEntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemEntityRendererMixin.java @@ -7,12 +7,12 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.render.RenderItemEntityEvent; -import net.minecraft.client.item.ItemModelManager; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.entity.ItemEntityRenderer; -import net.minecraft.client.render.entity.state.ItemEntityRenderState; -import net.minecraft.client.render.state.CameraRenderState; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.renderer.item.ItemModelResolver; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.ItemEntityRenderer; +import net.minecraft.client.renderer.entity.state.ItemEntityRenderState; +import net.minecraft.client.renderer.state.CameraRenderState; +import com.mojang.blaze3d.vertex.PoseStack; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -26,11 +26,11 @@ public abstract class ItemEntityRendererMixin { @Shadow @Final - private ItemModelManager itemModelManager; + private ItemModelResolver itemModelResolver; - @Inject(method = "render(Lnet/minecraft/client/render/entity/state/ItemEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/state/CameraRenderState;)V", at = @At("HEAD"), cancellable = true) - private void renderStack(ItemEntityRenderState itemEntityRenderState, MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { - RenderItemEntityEvent event = MeteorClient.EVENT_BUS.post(RenderItemEntityEvent.get(itemEntityRenderState, mc.getRenderTickCounter().getTickProgress(true), matrixStack, null, itemEntityRenderState.light, this.itemModelManager, orderedRenderCommandQueue)); + @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/ItemEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At("HEAD"), cancellable = true) + private void renderStack(ItemEntityRenderState itemEntityRenderState, PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { + RenderItemEntityEvent event = MeteorClient.EVENT_BUS.post(RenderItemEntityEvent.get(itemEntityRenderState, mc.getRenderTickCounter().getTickProgress(true), matrixStack, null, itemEntityRenderState.light, this.itemModelResolver, orderedRenderCommandQueue)); if (event.isCancelled()) ci.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemInHandRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemInHandRendererMixin.java new file mode 100644 index 0000000000..8fdd37baf8 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemInHandRendererMixin.java @@ -0,0 +1,99 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.google.common.base.MoreObjects; +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import meteordevelopment.meteorclient.MeteorClient; +import meteordevelopment.meteorclient.events.render.ArmRenderEvent; +import meteordevelopment.meteorclient.events.render.HeldItemRendererEvent; +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.HandView; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.ItemInHandRenderer; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.InteractionHand; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.ModifyVariable; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import static meteordevelopment.meteorclient.MeteorClient.mc; + +@Mixin(ItemInHandRenderer.class) +public abstract class ItemInHandRendererMixin { + @Shadow + private float mainHandHeight; + + @Shadow + private float offHandHeight; + + @Shadow + private ItemStack mainHandItem; + + @Shadow + private ItemStack offHandItem; + + @Shadow + protected abstract boolean shouldInstantlyReplaceVisibleItem(ItemStack from, ItemStack to); + + @ModifyVariable(method = "renderHandsWithItems(FLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/player/LocalPlayer;I)V", at = @At(value = "STORE", ordinal = 0), index = 6) + private float modifySwing(float swingProgress) { + HandView module = Modules.get().get(HandView.class); + InteractionHand hand = MoreObjects.firstNonNull(mc.player.preferredHand, InteractionHand.MAIN_HAND); + + if (module.isActive()) { + if (hand == InteractionHand.OFF_HAND && !mc.player.getOffHandStack().isEmpty()) { + return swingProgress + module.offSwing.get().floatValue(); + } + if (hand == InteractionHand.MAIN_HAND && !mc.player.getMainHandStack().isEmpty()) { + return swingProgress + module.mainSwing.get().floatValue(); + } + } + + return swingProgress; + } + + @ModifyReturnValue(method = "shouldInstantlyReplaceVisibleItem", at = @At("RETURN")) + private boolean modifySkipSwapAnimation(boolean original) { + return original || Modules.get().get(HandView.class).skipSwapping(); + } + + @ModifyArg(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Mth;clamp(FFF)F", ordinal = 2), index = 0) + private float modifyEquipProgressMainhand(float value) { + float f = mc.player.getHandEquippingProgress(1f); + float modified = Modules.get().get(HandView.class).oldAnimations() ? 1 : f * f * f; + + return (shouldInstantlyReplaceVisibleItem(mainHandItem, mc.player.getMainHandStack()) ? modified : 0) - mainHandHeight; + } + + @ModifyArg(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Mth;clamp(FFF)F", ordinal = 3), index = 0) + private float modifyEquipProgressOffhand(float value) { + return (shouldInstantlyReplaceVisibleItem(offHandItem, mc.player.getOffHandStack()) ? 1 : 0) - offHandHeight; + } + + @Inject(method = "renderArmWithItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/ItemInHandRenderer;renderItem(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/item/ItemDisplayContext;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;I)V", shift = At.Shift.BEFORE)) + private void onRenderItem(AbstractClientPlayer player, float tickProgress, float pitch, InteractionHand hand, float swingProgress, ItemStack item, float equipProgress, PoseStack matrices, SubmitNodeCollector orderedRenderCommandQueue, int light, CallbackInfo ci) { + MeteorClient.EVENT_BUS.post(HeldItemRendererEvent.get(hand, matrices)); + } + + @Inject(method = "renderArmWithItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/ItemInHandRenderer;renderPlayerArm(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;IFFLnet/minecraft/world/entity/HumanoidArm;)V")) + private void onRenderArm(AbstractClientPlayer player, float tickProgress, float pitch, InteractionHand hand, float swingProgress, ItemStack item, float equipProgress, PoseStack matrices, SubmitNodeCollector orderedRenderCommandQueue, int light, CallbackInfo ci) { + MeteorClient.EVENT_BUS.post(ArmRenderEvent.get(hand, matrices)); + } + + @Inject(method = "applyEatTransform", at = @At(value = "INVOKE", target = "Ljava/lang/Math;pow(DD)D", shift = At.Shift.BEFORE), cancellable = true) + private void cancelTransformations(PoseStack matrices, float tickDelta, HumanoidArm arm, ItemStack stack, AbstractClientPlayer player, CallbackInfo ci) { + if (Modules.get().get(HandView.class).disableFoodAnimation()) ci.cancel(); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemMixin.java index 058adad1e4..dcde39e4b0 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ItemMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemMixin.java @@ -7,9 +7,9 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.render.TooltipDataEvent; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.tooltip.TooltipData; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.inventory.tooltip.TooltipComponent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -19,8 +19,8 @@ @Mixin(Item.class) public abstract class ItemMixin { - @Inject(method = "getTooltipData", at = @At("HEAD"), cancellable = true) - private void onTooltipData(ItemStack stack, CallbackInfoReturnable> cir) { + @Inject(method = "getTooltipImage", at = @At("HEAD"), cancellable = true) + private void onTooltipData(ItemStack stack, CallbackInfoReturnable> cir) { TooltipDataEvent event = MeteorClient.EVENT_BUS.post(TooltipDataEvent.get(stack)); if (event.tooltipData != null) { cir.setReturnValue(Optional.of(event.tooltipData)); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemRendererMixin.java index 132e6140de..05db2e349a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ItemRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemRendererMixin.java @@ -7,8 +7,8 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.render.item.ItemRenderState; -import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.client.renderer.entity.ItemRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; @@ -16,12 +16,12 @@ @Mixin(ItemRenderer.class) public abstract class ItemRendererMixin { @ModifyVariable( - method = "renderItem(Lnet/minecraft/item/ItemDisplayContext;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;II[ILjava/util/List;Lnet/minecraft/client/render/RenderLayer;Lnet/minecraft/client/render/item/ItemRenderState$Glint;)V", + method = "renderItem(Lnet/minecraft/world/item/ItemDisplayContext;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;II[ILjava/util/List;Lnet/minecraft/client/renderer/rendertype/RenderType;Lnet/minecraft/client/renderer/item/ItemStackRenderState$FoilType;)V", at = @At("HEAD"), argsOnly = true ) - private static ItemRenderState.Glint modifyEnchant(ItemRenderState.Glint glint) { - if (Modules.get().get(NoRender.class).noEnchantGlint()) return ItemRenderState.Glint.NONE; + private static ItemStackRenderState.FoilType modifyEnchant(ItemStackRenderState.FoilType glint) { + if (Modules.get().get(NoRender.class).noEnchantGlint()) return ItemStackRenderState.FoilType.NONE; return glint; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemStackMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemStackMixin.java index 21b7729b39..7254e81fc2 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ItemStackMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemStackMixin.java @@ -11,10 +11,10 @@ import meteordevelopment.meteorclient.events.entity.player.StoppedUsingItemEvent; import meteordevelopment.meteorclient.events.game.ItemStackTooltipEvent; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.text.Text; -import net.minecraft.world.World; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.network.chat.Component; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -27,8 +27,8 @@ @Mixin(ItemStack.class) public abstract class ItemStackMixin { - @ModifyReturnValue(method = "getTooltip", at = @At("RETURN")) - private List onGetTooltip(List original) { + @ModifyReturnValue(method = "getTooltipLines", at = @At("RETURN")) + private List onGetTooltip(List original) { if (Utils.canUpdate()) { ItemStackTooltipEvent event = MeteorClient.EVENT_BUS.post(new ItemStackTooltipEvent((ItemStack) (Object) this, original)); return event.list(); @@ -37,15 +37,15 @@ private List onGetTooltip(List original) { return original; } - @Inject(method = "finishUsing", at = @At("HEAD")) - private void onFinishUsing(World world, LivingEntity user, CallbackInfoReturnable info) { + @Inject(method = "finishUsingItem", at = @At("HEAD")) + private void onFinishUsing(Level world, LivingEntity user, CallbackInfoReturnable info) { if (user == mc.player) { MeteorClient.EVENT_BUS.post(FinishUsingItemEvent.get((ItemStack) (Object) this)); } } - @Inject(method = "onStoppedUsing", at = @At("HEAD")) - private void onStoppedUsing(World world, LivingEntity user, int remainingUseTicks, CallbackInfo info) { + @Inject(method = "releaseUsing", at = @At("HEAD")) + private void onStoppedUsing(Level world, LivingEntity user, int remainingUseTicks, CallbackInfo info) { if (user == mc.player) { MeteorClient.EVENT_BUS.post(StoppedUsingItemEvent.get((ItemStack) (Object) this)); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ItemRenderStateAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemStackRenderStateAccessor.java similarity index 53% rename from src/main/java/meteordevelopment/meteorclient/mixin/ItemRenderStateAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ItemStackRenderStateAccessor.java index 57e324f26d..9001b514d3 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ItemRenderStateAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemStackRenderStateAccessor.java @@ -5,15 +5,15 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.render.item.ItemRenderState; +import net.minecraft.client.renderer.item.ItemStackRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(ItemRenderState.class) -public interface ItemRenderStateAccessor { - @Accessor("layerCount") - int meteor$getLayerCount(); +@Mixin(ItemStackRenderState.class) +public interface ItemStackRenderStateAccessor { + @Accessor("activeLayerCount") + int meteor$getActiveLayerCount(); @Accessor("layers") - ItemRenderState.LayerRenderState[] meteor$getLayers(); + ItemStackRenderState.LayerRenderState[] meteor$getLayers(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TransformationMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ItemTransformMixin.java similarity index 67% rename from src/main/java/meteordevelopment/meteorclient/mixin/TransformationMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ItemTransformMixin.java index ed6f3a4477..20af560e01 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/TransformationMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ItemTransformMixin.java @@ -7,18 +7,18 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.render.ApplyTransformationEvent; -import net.minecraft.client.render.model.json.Transformation; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.renderer.block.model.ItemTransform; +import com.mojang.blaze3d.vertex.PoseStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(Transformation.class) -public abstract class TransformationMixin { +@Mixin(ItemTransform.class) +public abstract class ItemTransformMixin { @Inject(method = "apply", at = @At("HEAD"), cancellable = true) - private void onApply(boolean leftHanded, MatrixStack.Entry entry, CallbackInfo info) { - ApplyTransformationEvent event = MeteorClient.EVENT_BUS.post(ApplyTransformationEvent.get((Transformation) (Object) this, leftHanded)); + private void onApply(boolean leftHanded, PoseStack.Pose entry, CallbackInfo info) { + ApplyTransformationEvent event = MeteorClient.EVENT_BUS.post(ApplyTransformationEvent.get((ItemTransform) (Object) this, leftHanded)); if (event.isCancelled()) info.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MultiplayerScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/JoinMultiplayerScreenMixin.java similarity index 76% rename from src/main/java/meteordevelopment/meteorclient/mixin/MultiplayerScreenMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/JoinMultiplayerScreenMixin.java index ba74b38a4e..57f64d59d6 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MultiplayerScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/JoinMultiplayerScreenMixin.java @@ -11,11 +11,11 @@ import meteordevelopment.meteorclient.systems.proxies.Proxies; import meteordevelopment.meteorclient.systems.proxies.Proxy; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen; -import net.minecraft.client.gui.widget.ButtonWidget; -import net.minecraft.text.Text; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.multiplayer.JoinMultiplayerScreen; +import net.minecraft.client.gui.components.Button; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -24,8 +24,8 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; -@Mixin(MultiplayerScreen.class) -public abstract class MultiplayerScreenMixin extends Screen { +@Mixin(JoinMultiplayerScreen.class) +public abstract class JoinMultiplayerScreenMixin extends Screen { @Unique private int textColor1; @Unique @@ -37,12 +37,12 @@ public abstract class MultiplayerScreenMixin extends Screen { private int loggedInAsLength; @Unique - private ButtonWidget accounts; + private Button accounts; @Unique - private ButtonWidget proxies; + private Button proxies; - public MultiplayerScreenMixin(Text title) { + public JoinMultiplayerScreenMixin(Component title) { super(title); } @@ -56,7 +56,7 @@ private void onInit(CallbackInfo info) { if (accounts == null) { accounts = addDrawableChild( - new ButtonWidget.Builder(Text.literal("Accounts"), button -> client.setScreen(GuiThemes.get().accountsScreen())) + new Button.Builder(Component.literal("Accounts"), button -> client.setScreen(GuiThemes.get().accountsScreen())) .size(75, 20) .build() ); @@ -65,16 +65,16 @@ private void onInit(CallbackInfo info) { if (proxies == null) { proxies = addDrawableChild( - new ButtonWidget.Builder(Text.literal("Proxies"), button -> client.setScreen(GuiThemes.get().proxiesScreen())) - .size(75, 20) - .build() - ); + new Button.Builder(Component.literal("Proxies"), button -> client.setScreen(GuiThemes.get().proxiesScreen())) + .size(75, 20) + .build() + ); } proxies.setPosition(this.width - 75 - 3 - 75 - 2, 3); } @Override - public void render(DrawContext context, int mouseX, int mouseY, float deltaTicks) { + public void render(GuiGraphics context, int mouseX, int mouseY, float deltaTicks) { super.render(context, mouseX, mouseY, deltaTicks); int x = 3; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingAccessor.java deleted file mode 100644 index 86feac3b16..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/KeyBindingAccessor.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.client.option.KeyBinding; -import net.minecraft.client.util.InputUtil; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.gen.Invoker; - -import java.util.Map; - -@Mixin(KeyBinding.class) -public interface KeyBindingAccessor { - @Accessor("KEYS_BY_ID") - static Map getKeysById() { return null; } - - @Accessor("boundKey") - InputUtil.Key meteor$getKey(); - - @Accessor("timesPressed") - int meteor$getTimesPressed(); - - @Accessor("timesPressed") - void meteor$setTimesPressed(int timesPressed); - - @Invoker("reset") - void meteor$invokeReset(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/KeyMappingAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/KeyMappingAccessor.java new file mode 100644 index 0000000000..c9efce5a37 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/KeyMappingAccessor.java @@ -0,0 +1,34 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.client.KeyMapping; +import com.mojang.blaze3d.platform.InputConstants; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.Map; + +@Mixin(KeyMapping.class) +public interface KeyMappingAccessor { + @Accessor("ALL") + static Map getKeysById() { + return null; + } + + @Accessor("key") + InputConstants.Key meteor$getKey(); + + @Accessor("clickCount") + int meteor$getClickCount(); + + @Accessor("clickCount") + void meteor$setClickCount(int timesPressed); + + @Invoker("release") + void meteor$invokeRelease(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardHandlerMixin.java similarity index 65% rename from src/main/java/meteordevelopment/meteorclient/mixin/KeyboardMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/KeyboardHandlerMixin.java index ae69aa53ba..4cd5549485 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardHandlerMixin.java @@ -13,10 +13,10 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.input.Input; import meteordevelopment.meteorclient.utils.misc.input.KeyAction; -import net.minecraft.client.Keyboard; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.input.CharInput; -import net.minecraft.client.input.KeyInput; +import net.minecraft.client.KeyboardHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.input.CharacterEvent; +import net.minecraft.client.input.KeyEvent; import org.lwjgl.glfw.GLFW; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -25,12 +25,14 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(Keyboard.class) -public abstract class KeyboardMixin { - @Shadow @Final private MinecraftClient client; +@Mixin(KeyboardHandler.class) +public abstract class KeyboardHandlerMixin { + @Shadow + @Final + private Minecraft minecraft; - @Inject(method = "onKey", at = @At("HEAD"), cancellable = true) - public void onKey(long window, int action, KeyInput input, CallbackInfo ci) { + @Inject(method = "keyPress", at = @At("HEAD"), cancellable = true) + public void onKey(long window, int action, KeyEvent input, CallbackInfo ci) { int modifiers = input.modifiers(); if (input.key() != GLFW.GLFW_KEY_UNKNOWN) { // on Linux/X11 the modifier is not active when the key is pressed and still active when the key is released @@ -41,20 +43,21 @@ public void onKey(long window, int action, KeyInput input, CallbackInfo ci) { modifiers &= ~Input.getModifier(input.key()); } - if (client.currentScreen instanceof WidgetScreen && action == GLFW.GLFW_REPEAT) { - ((WidgetScreen) client.currentScreen).keyRepeated(new KeyInput(input.key(), input.scancode(), modifiers)); + if (minecraft.currentScreen instanceof WidgetScreen && action == GLFW.GLFW_REPEAT) { + ((WidgetScreen) minecraft.currentScreen).keyRepeated(new KeyInput(input.key(), input.scancode(), modifiers)); } if (GuiKeyEvents.canUseKeys) { Input.setKeyState(input.key(), action != GLFW.GLFW_RELEASE); - if (MeteorClient.EVENT_BUS.post(KeyEvent.get(new KeyInput(input.key(), input.scancode(), modifiers), KeyAction.get(action))).isCancelled()) ci.cancel(); + if (MeteorClient.EVENT_BUS.post(KeyEvent.get(new KeyInput(input.key(), input.scancode(), modifiers), KeyAction.get(action))).isCancelled()) + ci.cancel(); } } } - @Inject(method = "onChar", at = @At("HEAD"), cancellable = true) - private void onChar(long window, CharInput input, CallbackInfo ci) { - if (Utils.canUpdate() && !client.isPaused() && (client.currentScreen == null || client.currentScreen instanceof WidgetScreen)) { + @Inject(method = "charTyped", at = @At("HEAD"), cancellable = true) + private void onChar(long window, CharacterEvent input, CallbackInfo ci) { + if (Utils.canUpdate() && !minecraft.isPaused() && (minecraft.currentScreen == null || minecraft.currentScreen instanceof WidgetScreen)) { if (MeteorClient.EVENT_BUS.post(CharTypedEvent.get((char) input.codepoint())).isCancelled()) ci.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardInputMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardInputMixin.java index 10bd979049..447115e5a9 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardInputMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/KeyboardInputMixin.java @@ -8,26 +8,27 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.Sneak; import meteordevelopment.meteorclient.systems.modules.render.Freecam; -import net.minecraft.client.input.Input; -import net.minecraft.client.input.KeyboardInput; -import net.minecraft.util.PlayerInput; +import net.minecraft.client.player.ClientInput; +import net.minecraft.client.player.KeyboardInput; +import net.minecraft.world.entity.player.Input; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(KeyboardInput.class) -public abstract class KeyboardInputMixin extends Input { +public abstract class KeyboardInputMixin extends ClientInput { @Inject(method = "tick", at = @At("TAIL")) private void isPressed(CallbackInfo ci) { - if (Modules.get().get(Sneak.class).doVanilla() || Modules.get().get(Freecam.class).staySneaking()) playerInput = new PlayerInput( - playerInput.forward(), - playerInput.backward(), - playerInput.left(), - playerInput.right(), - playerInput.jump(), - true, - playerInput.sprint() - ); + if (Modules.get().get(Sneak.class).doVanilla() || Modules.get().get(Freecam.class).staySneaking()) + playerInput = new PlayerInput( + playerInput.forward(), + playerInput.backward(), + playerInput.left(), + playerInput.right(), + playerInput.jump(), + true, + playerInput.sprint() + ); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/LayerRenderStateAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/LayerRenderStateAccessor.java index 59b4ee2d47..0100894496 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/LayerRenderStateAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LayerRenderStateAccessor.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.render.item.ItemRenderState; -import net.minecraft.client.render.model.json.Transformation; +import net.minecraft.client.renderer.item.ItemStackRenderState; +import net.minecraft.client.renderer.block.model.ItemTransform; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(ItemRenderState.LayerRenderState.class) +@Mixin(ItemStackRenderState.LayerRenderState.class) public interface LayerRenderStateAccessor { @Accessor("transform") - Transformation meteor$getTransform(); + ItemTransform meteor$getTransform(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/WorldAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/LevelAccessor.java similarity index 51% rename from src/main/java/meteordevelopment/meteorclient/mixin/WorldAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/LevelAccessor.java index 94773488d7..9780fd202b 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/WorldAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LevelAccessor.java @@ -5,14 +5,14 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.entity.Entity; -import net.minecraft.world.World; -import net.minecraft.world.entity.EntityLookup; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.entity.LevelEntityGetter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(World.class) -public interface WorldAccessor { - @Invoker("getEntityLookup") - EntityLookup meteor$getEntityLookup(); +@Mixin(Level.class) +public interface LevelAccessor { + @Invoker("getEntities") + LevelEntityGetter meteor$getEntityLookup(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/WorldChunkMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/LevelChunkMixin.java similarity index 71% rename from src/main/java/meteordevelopment/meteorclient/mixin/WorldChunkMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/LevelChunkMixin.java index 9b4b036233..85db6cc9fa 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/WorldChunkMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LevelChunkMixin.java @@ -7,10 +7,10 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.world.BlockUpdateEvent; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.chunk.WorldChunk; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.chunk.LevelChunk; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -18,12 +18,14 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(WorldChunk.class) -public abstract class WorldChunkMixin { - @Shadow @Final World world; +@Mixin(LevelChunk.class) +public abstract class LevelChunkMixin { + @Shadow + @Final + Level level; @Inject(method = "setBlockState", at = @At("TAIL")) private void onSetBlockState(BlockPos pos, BlockState state, int flags, CallbackInfoReturnable info) { - if (world.isClient()) MeteorClient.EVENT_BUS.post(BlockUpdateEvent.get(pos, info.getReturnValue(), state)); + if (level.isClient()) MeteorClient.EVENT_BUS.post(BlockUpdateEvent.get(pos, info.getReturnValue(), state)); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/LevelEntityGetterAdapterAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/LevelEntityGetterAdapterAccessor.java new file mode 100644 index 0000000000..4581e60947 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LevelEntityGetterAdapterAccessor.java @@ -0,0 +1,18 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.world.level.entity.EntityAccess; +import net.minecraft.world.level.entity.EntitySectionStorage; +import net.minecraft.world.level.entity.LevelEntityGetterAdapter; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(LevelEntityGetterAdapter.class) +public interface LevelEntityGetterAdapterAccessor { + @Accessor("sectionStorage") + EntitySectionStorage meteor$getSectionStorage(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/LevelRendererAccessor.java similarity index 54% rename from src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/LevelRendererAccessor.java index f60acead4b..4abb10c581 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LevelRendererAccessor.java @@ -7,13 +7,13 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import net.minecraft.client.render.WorldRenderer; -import net.minecraft.entity.player.BlockBreakingInfo; +import net.minecraft.client.renderer.LevelRenderer; +import net.minecraft.server.level.BlockDestructionProgress; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(WorldRenderer.class) -public interface WorldRendererAccessor { - @Accessor("blockBreakingInfos") - Int2ObjectMap meteor$getBlockBreakingInfos(); +@Mixin(LevelRenderer.class) +public interface LevelRendererAccessor { + @Accessor("destroyingBlocks") + Int2ObjectMap meteor$getDestroyingBlocks(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/LightmapTextureManagerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/LightTextureMixin.java similarity index 59% rename from src/main/java/meteordevelopment/meteorclient/mixin/LightmapTextureManagerMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/LightTextureMixin.java index b2ece57ea1..8e8e0c82c1 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/LightmapTextureManagerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LightTextureMixin.java @@ -12,10 +12,10 @@ import meteordevelopment.meteorclient.systems.modules.render.Fullbright; import meteordevelopment.meteorclient.systems.modules.render.NoRender; import meteordevelopment.meteorclient.systems.modules.render.Xray; -import net.minecraft.client.render.LightmapTextureManager; -import net.minecraft.entity.LivingEntity; -import net.minecraft.util.math.ColorHelper; -import net.minecraft.util.profiler.Profiler; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.util.ARGB; +import net.minecraft.util.profiling.ProfilerFiller; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -24,23 +24,23 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(LightmapTextureManager.class) -public abstract class LightmapTextureManagerMixin { +@Mixin(LightTexture.class) +public abstract class LightTextureMixin { @Shadow @Final - private GpuTexture glTexture; + private GpuTexture texture; - @Inject(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;push(Ljava/lang/String;)V", shift = At.Shift.AFTER), cancellable = true) - private void update$skip(float tickProgress, CallbackInfo ci, @Local Profiler profiler) { + @Inject(method = "updateLightTexture", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiling/ProfilerFiller;push(Ljava/lang/String;)V", shift = At.Shift.AFTER), cancellable = true) + private void update$skip(float tickProgress, CallbackInfo ci, @Local ProfilerFiller profiler) { if (Modules.get().get(Fullbright.class).getGamma() || Modules.get().isActive(Xray.class)) { - RenderSystem.getDevice().createCommandEncoder().clearColorTexture(glTexture, ColorHelper.getArgb(255, 255, 255, 255)); + RenderSystem.getDevice().createCommandEncoder().clearColorTexture(texture, ARGB.getArgb(255, 255, 255, 255)); profiler.pop(); ci.cancel(); } } - @Inject(method = "getDarkness", at = @At("HEAD"), cancellable = true) - private void getDarknessFactor(LivingEntity entity, float factor, float tickProgress, CallbackInfoReturnable info) { - if (Modules.get().get(NoRender.class).noDarkness()) info.setReturnValue(0.0f); - } + @Inject(method = "calculateDarknessScale", at = @At("HEAD"), cancellable = true) + private void getDarknessFactor(LivingEntity entity, float factor, float tickProgress, CallbackInfoReturnable info) { + if (Modules.get().get(NoRender.class).noDarkness()) info.setReturnValue(0.0f); + } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/LightningEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/LightningBoltRendererMixin.java similarity index 70% rename from src/main/java/meteordevelopment/meteorclient/mixin/LightningEntityRendererMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/LightningBoltRendererMixin.java index 6db8399a10..aa4b1c74d7 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/LightningEntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LightningBoltRendererMixin.java @@ -8,30 +8,30 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.world.Ambience; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.entity.LightningEntityRenderer; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.entity.LightningBoltRenderer; import org.joml.Matrix4f; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(LightningEntityRenderer.class) -public abstract class LightningEntityRendererMixin { +@Mixin(LightningBoltRenderer.class) +public abstract class LightningBoltRendererMixin { /** * @author Walaryne */ - @Inject(method = "drawBranch", at = @At(value = "HEAD"), cancellable = true) + @Inject(method = "quad", at = @At(value = "HEAD"), cancellable = true) private static void onSetLightningVertex(Matrix4f matrix4f, VertexConsumer vertexConsumer, float f, float g, int i, float h, float j, float k, float l, float m, float n, float o, boolean bl, boolean bl2, boolean bl3, boolean bl4, CallbackInfo ci) { Ambience ambience = Modules.get().get(Ambience.class); if (ambience.isActive() && ambience.changeLightningColor.get()) { Color color = ambience.lightningColor.get(); - vertexConsumer.vertex(matrix4f, f + (bl ? o : -o), (float)(i * 16), g + (bl2 ? o : -o)).color(color.r / 255f, color.g / 255f, color.b / 255f, 0.3F); - vertexConsumer.vertex(matrix4f, h + (bl ? n : -n), (float)((i + 1) * 16), j + (bl2 ? n : -n)).color(color.r / 255f, color.g / 255f, color.b / 255f, 0.3F); - vertexConsumer.vertex(matrix4f, h + (bl3 ? n : -n), (float)((i + 1) * 16), j + (bl4 ? n : -n)).color(color.r / 255f, color.g / 255f, color.b / 255f, 0.3F); - vertexConsumer.vertex(matrix4f, f + (bl3 ? o : -o), (float)(i * 16), g + (bl4 ? o : -o)).color(color.r / 255f, color.g / 255f, color.b / 255f, 0.3F); + vertexConsumer.vertex(matrix4f, f + (bl ? o : -o), (float) (i * 16), g + (bl2 ? o : -o)).color(color.r / 255f, color.g / 255f, color.b / 255f, 0.3F); + vertexConsumer.vertex(matrix4f, h + (bl ? n : -n), (float) ((i + 1) * 16), j + (bl2 ? n : -n)).color(color.r / 255f, color.g / 255f, color.b / 255f, 0.3F); + vertexConsumer.vertex(matrix4f, h + (bl3 ? n : -n), (float) ((i + 1) * 16), j + (bl4 ? n : -n)).color(color.r / 255f, color.g / 255f, color.b / 255f, 0.3F); + vertexConsumer.vertex(matrix4f, f + (bl3 ? o : -o), (float) (i * 16), g + (bl4 ? o : -o)).color(color.r / 255f, color.g / 255f, color.b / 255f, 0.3F); ci.cancel(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/FluidRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/LiquidBlockRendererMixin.java similarity index 70% rename from src/main/java/meteordevelopment/meteorclient/mixin/FluidRendererMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/LiquidBlockRendererMixin.java index 69fd8ea88f..8a9869a073 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/FluidRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LiquidBlockRendererMixin.java @@ -9,26 +9,28 @@ import meteordevelopment.meteorclient.systems.modules.render.Xray; import meteordevelopment.meteorclient.systems.modules.world.Ambience; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.block.FluidRenderer; -import net.minecraft.fluid.FluidState; -import net.minecraft.registry.tag.FluidTags; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.BlockRenderView; +import net.minecraft.world.level.block.state.BlockState; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.block.LiquidBlockRenderer; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.tags.FluidTags; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockAndTintGetter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(FluidRenderer.class) -public abstract class FluidRendererMixin { - @Unique private final ThreadLocal alphas = new ThreadLocal<>(); - @Unique private final ThreadLocal ambient = ThreadLocal.withInitial(() -> false); +@Mixin(LiquidBlockRenderer.class) +public abstract class LiquidBlockRendererMixin { + @Unique + private final ThreadLocal alphas = new ThreadLocal<>(); + @Unique + private final ThreadLocal ambient = ThreadLocal.withInitial(() -> false); - @Inject(method = "render", at = @At("HEAD"), cancellable = true) - private void onRender(BlockRenderView world, BlockPos pos, VertexConsumer vertexConsumer, BlockState blockState, FluidState fluidState, CallbackInfo info) { + @Inject(method = "tesselate", at = @At("HEAD"), cancellable = true) + private void onRender(BlockAndTintGetter world, BlockPos pos, VertexConsumer vertexConsumer, BlockState blockState, FluidState fluidState, CallbackInfo info) { Ambience ambience = Modules.get().get(Ambience.class); ambient.set(ambience.isActive() && ambience.customLavaColor.get() && fluidState.isIn(FluidTags.LAVA)); @@ -47,8 +49,7 @@ private void onVertex(VertexConsumer vertexConsumer, float x, float y, float z, Color color = Modules.get().get(Ambience.class).lavaColor.get(); vertex(vertexConsumer, x, y, z, color.r, color.g, color.b, (alpha != -1 ? alpha : color.a), u, v, light); info.cancel(); - } - else if (alpha != -1) { + } else if (alpha != -1) { vertex(vertexConsumer, x, y, z, (int) (red * 255), (int) (green * 255), (int) (blue * 255), alpha, u, v, light); info.cancel(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityAccessor.java index f3ae3a59a2..67cfa19475 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityAccessor.java @@ -5,24 +5,24 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.entity.LivingEntity; -import net.minecraft.fluid.Fluid; -import net.minecraft.registry.tag.TagKey; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.tags.TagKey; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(LivingEntity.class) public interface LivingEntityAccessor { - @Invoker("swimUpward") + @Invoker("jumpInLiquid") void meteor$swimUpwards(TagKey fluid); @Accessor("jumping") boolean meteor$isJumping(); - @Accessor("jumpingCooldown") + @Accessor("noJumpDelay") int meteor$getJumpCooldown(); - @Accessor("jumpingCooldown") + @Accessor("noJumpDelay") void meteor$setJumpCooldown(int cooldown); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityMixin.java index 892a8f9924..bfa5325428 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityMixin.java @@ -19,17 +19,17 @@ import meteordevelopment.meteorclient.systems.modules.player.OffhandCrash; import meteordevelopment.meteorclient.systems.modules.render.HandView; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.fluid.FluidState; -import net.minecraft.item.ItemStack; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.util.Hand; -import net.minecraft.world.World; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.world.item.ItemStack; +import net.minecraft.core.Holder; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.*; @@ -40,11 +40,11 @@ @Mixin(LivingEntity.class) public abstract class LivingEntityMixin extends Entity { - public LivingEntityMixin(EntityType type, World world) { + public LivingEntityMixin(EntityType type, Level world) { super(type, world); } - @ModifyReturnValue(method = "canWalkOnFluid", at = @At("RETURN")) + @ModifyReturnValue(method = "canStandOnFluid", at = @At("RETURN")) private boolean onCanWalkOnFluid(boolean original, FluidState fluidState) { if ((Object) this != mc.player) return original; CanWalkOnFluidEvent event = MeteorClient.EVENT_BUS.post(CanWalkOnFluidEvent.get(fluidState)); @@ -55,10 +55,10 @@ private boolean onCanWalkOnFluid(boolean original, FluidState fluidState) { @Inject(method = "spawnItemParticles", at = @At("HEAD"), cancellable = true) private void spawnItemParticles(ItemStack stack, int count, CallbackInfo info) { NoRender noRender = Modules.get().get(NoRender.class); - if (noRender.noEatParticles() && stack.getComponents().contains(DataComponentTypes.FOOD)) info.cancel(); + if (noRender.noEatParticles() && stack.getComponents().contains(DataComponents.FOOD)) info.cancel(); } - @Inject(method = "onEquipStack", at = @At("HEAD"), cancellable = true) + @Inject(method = "onEquipItem", at = @At("HEAD"), cancellable = true) private void onEquipStack(EquipmentSlot slot, ItemStack oldStack, ItemStack newStack, CallbackInfo info) { if ((Object) this != mc.player) return; @@ -67,26 +67,26 @@ private void onEquipStack(EquipmentSlot slot, ItemStack oldStack, ItemStack newS } } - @ModifyArg(method = "swingHand(Lnet/minecraft/util/Hand;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;swingHand(Lnet/minecraft/util/Hand;Z)V")) - private Hand setHand(Hand hand) { + @ModifyArg(method = "swing(Lnet/minecraft/world/InteractionHand;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;swing(Lnet/minecraft/world/InteractionHand;Z)V")) + private InteractionHand setHand(InteractionHand hand) { if ((Object) this != mc.player) return hand; HandView handView = Modules.get().get(HandView.class); if (handView.isActive()) { if (handView.swingMode.get() == HandView.SwingMode.None) return hand; - return handView.swingMode.get() == HandView.SwingMode.Offhand ? Hand.OFF_HAND : Hand.MAIN_HAND; + return handView.swingMode.get() == HandView.SwingMode.Offhand ? InteractionHand.OFF_HAND : InteractionHand.MAIN_HAND; } return hand; } - @ModifyExpressionValue(method = "getHandSwingDuration", at = @At(value = "INVOKE", target = "Lnet/minecraft/component/type/SwingAnimationComponent;duration()I")) + @ModifyExpressionValue(method = "getCurrentSwingDuration", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/component/SwingAnimation;duration()I")) private int getHandSwingDuration(int original) { if ((Object) this != mc.player) return original; return Modules.get().get(HandView.class).isActive() && mc.options.getPerspective().isFirstPerson() ? Modules.get().get(HandView.class).swingSpeed.get() : original; } - @ModifyReturnValue(method = "isGliding", at = @At("RETURN")) + @ModifyReturnValue(method = "isFallFlying", at = @At("RETURN")) private boolean isGlidingHook(boolean original) { if ((Object) this != mc.player) return original; @@ -100,7 +100,7 @@ private boolean isGlidingHook(boolean original) { @Unique private boolean previousElytra = false; - @Inject(method = "isGliding", at = @At("TAIL"), cancellable = true) + @Inject(method = "isFallFlying", at = @At("TAIL"), cancellable = true) public void recastOnLand(CallbackInfoReturnable cir) { boolean elytra = cir.getReturnValue(); ElytraFly elytraFly = Modules.get().get(ElytraFly.class); @@ -110,15 +110,15 @@ public void recastOnLand(CallbackInfoReturnable cir) { previousElytra = elytra; } - @ModifyReturnValue(method = "hasStatusEffect", at = @At("RETURN")) - private boolean hasStatusEffect(boolean original, RegistryEntry effect) { + @ModifyReturnValue(method = "hasEffect", at = @At("RETURN")) + private boolean hasStatusEffect(boolean original, Holder effect) { if (effect == null || effect.value() == null) return original; if (Modules.get().get(NoStatusEffects.class).shouldBlock(effect.value())) return false; return original; } - @ModifyExpressionValue(method = "jump", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;getYaw()F")) + @ModifyExpressionValue(method = "jumpFromGround", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;getYaw()F")) private float modifyGetYaw(float original) { if ((Object) this != mc.player) return original; if (!Modules.get().get(Sprint.class).rageSprint()) return original; @@ -133,14 +133,14 @@ private float modifyGetYaw(float original) { return original; } - @ModifyConstant(method = "jump", constant = @Constant(floatValue = 1.0E-5F)) + @ModifyConstant(method = "jumpFromGround", constant = @Constant(floatValue = 1.0E-5F)) private float modifyJumpConstant(float original) { if ((Object) this != mc.player) return original; if (!Modules.get().isActive(HighJump.class)) return original; return -1; } - @ModifyExpressionValue(method = "jump", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;isSprinting()Z")) + @ModifyExpressionValue(method = "jumpFromGround", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;isSprinting()Z")) private boolean modifyIsSprinting(boolean original) { if ((Object) this != mc.player) return original; if (!Modules.get().get(Sprint.class).rageSprint()) return original; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityRendererMixin.java index 8c96fa2926..9cdcb8d91e 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LivingEntityRendererMixin.java @@ -15,20 +15,20 @@ import meteordevelopment.meteorclient.systems.modules.render.NoRender; import meteordevelopment.meteorclient.utils.player.PlayerUtils; import net.minecraft.client.model.Model; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.RenderLayers; -import net.minecraft.client.render.command.ModelCommandRenderer; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.entity.LivingEntityRenderer; -import net.minecraft.client.render.entity.model.EntityModel; -import net.minecraft.client.render.entity.state.LivingEntityRenderState; -import net.minecraft.client.render.state.CameraRenderState; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.scoreboard.Team; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderTypes; +import net.minecraft.client.renderer.feature.ModelFeatureRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.client.renderer.state.CameraRenderState; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.scores.PlayerTeam; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -42,15 +42,15 @@ public abstract class LivingEntityRendererMixin> { // Freecam - @ModifyExpressionValue(method = "hasLabel(Lnet/minecraft/entity/LivingEntity;D)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;getCameraEntity()Lnet/minecraft/entity/Entity;")) + @ModifyExpressionValue(method = "shouldShowName(Lnet/minecraft/world/entity/LivingEntity;D)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getCameraEntity()Lnet/minecraft/world/entity/Entity;")) private Entity hasLabelGetCameraEntityProxy(Entity cameraEntity) { return Modules.get().isActive(Freecam.class) ? null : cameraEntity; } // Player model rendering in main menu - @ModifyExpressionValue(method = "hasLabel(Lnet/minecraft/entity/LivingEntity;D)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;getScoreboardTeam()Lnet/minecraft/scoreboard/Team;")) - private Team hasLabelClientPlayerEntityGetScoreboardTeamProxy(Team team) { + @ModifyExpressionValue(method = "shouldShowName(Lnet/minecraft/world/entity/LivingEntity;D)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;getScoreboardTeam()Lnet/minecraft/world/scores/PlayerTeam;")) + private PlayerTeam hasLabelClientPlayerEntityGetScoreboardTeamProxy(PlayerTeam team) { return (mc.player == null) ? null : team; } @@ -66,9 +66,10 @@ private Team hasLabelClientPlayerEntityGetScoreboardTeamProxy(Team team) { // Chams - player color - @WrapWithCondition(method = "render(Lnet/minecraft/client/render/entity/state/LivingEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/RenderLayer;IIILnet/minecraft/client/texture/Sprite;ILnet/minecraft/client/render/command/ModelCommandRenderer$CrumblingOverlayCommand;)V")) - private boolean render$render(OrderedRenderCommandQueue instance, Model model, TState state, MatrixStack matrixStack, RenderLayer renderLayer, int light, int overlay, int mixColor, Sprite sprite, int outlineColor, ModelCommandRenderer.CrumblingOverlayCommand crumblingOverlayCommand) { - if (!chams.isActive() || !chams.players.get() || !(((IEntityRenderState) state).meteor$getEntity() instanceof PlayerEntity player)) return true; + @WrapWithCondition(method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitModel(Lnet/minecraft/client/model/Model;Ljava/lang/Object;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;IIILnet/minecraft/client/renderer/texture/TextureAtlasSprite;ILnet/minecraft/client/renderer/feature/ModelFeatureRenderer$CrumblingOverlay;)V")) + private boolean render$render(SubmitNodeCollector instance, Model model, TState state, PoseStack matrixStack, RenderType renderLayer, int light, int overlay, int mixColor, TextureAtlasSprite sprite, int outlineColor, ModelFeatureRenderer.CrumblingOverlay crumblingOverlayCommand) { + if (!chams.isActive() || !chams.players.get() || !(((IEntityRenderState) state).meteor$getEntity() instanceof Player player)) + return true; if (chams.ignoreSelf.get() && player == mc.player) return true; instance.submitModel(model, state, matrixStack, renderLayer, light, overlay, PlayerUtils.getPlayerColor(player, chams.playersColor.get()).getPacked(), sprite, outlineColor, null); @@ -77,9 +78,9 @@ private Team hasLabelClientPlayerEntityGetScoreboardTeamProxy(Team team) { // Chams - Player texture - @ModifyReturnValue(method = "getRenderLayer", at = @At("RETURN")) - private RenderLayer getRenderPlayer(RenderLayer original, S state, boolean showBody, boolean translucent, boolean showOutline) { - if (!chams.isActive() || !(((IEntityRenderState) state).meteor$getEntity() instanceof PlayerEntity player)) + @ModifyReturnValue(method = "getRenderType", at = @At("RETURN")) + private RenderType getRenderPlayer(RenderType original, S state, boolean showBody, boolean translucent, boolean showOutline) { + if (!chams.isActive() || !(((IEntityRenderState) state).meteor$getEntity() instanceof Player player)) return original; if (!chams.players.get() || chams.playersTexture.get()) @@ -87,13 +88,13 @@ private RenderLayer getRenderPlayer(RenderLayer original, S state, boolean showB if (chams.ignoreSelf.get() && player == mc.player) return original; - return RenderLayers.itemEntityTranslucentCull(Chams.BLANK); + return RenderTypes.itemEntityTranslucentCull(Chams.BLANK); } // Chams - Through walls - @Inject(method = "render(Lnet/minecraft/client/render/entity/state/LivingEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/state/CameraRenderState;)V", at = @At("HEAD"), cancellable = true) - private void render$Head(S state, MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { + @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At("HEAD"), cancellable = true) + private void render$Head(S state, PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { Entity entity = ((IEntityRenderState) state).meteor$getEntity(); if (!(entity instanceof LivingEntity livingEntity)) return; @@ -105,8 +106,8 @@ private RenderLayer getRenderPlayer(RenderLayer original, S state, boolean showB } } - @Inject(method = "render(Lnet/minecraft/client/render/entity/state/LivingEntityRenderState;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;Lnet/minecraft/client/render/state/CameraRenderState;)V", at = @At("TAIL")) - private void render$Tail(S state, MatrixStack matrixStack, OrderedRenderCommandQueue orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { + @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At("TAIL")) + private void render$Tail(S state, PoseStack matrixStack, SubmitNodeCollector orderedRenderCommandQueue, CameraRenderState arg, CallbackInfo ci) { Entity entity = ((IEntityRenderState) state).meteor$getEntity(); if (!(entity instanceof LivingEntity livingEntity)) return; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/LocalPlayerAccessor.java similarity index 60% rename from src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/LocalPlayerAccessor.java index fb58bbdd60..65767c1ff5 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/AbstractBlockAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/LocalPlayerAccessor.java @@ -5,12 +5,12 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.block.AbstractBlock; +import net.minecraft.client.player.LocalPlayer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(AbstractBlock.class) -public interface AbstractBlockAccessor { - @Accessor("collidable") - boolean meteor$isCollidable(); +@Mixin(LocalPlayer.class) +public interface LocalPlayerAccessor { + @Accessor("positionReminder") + void meteor$setPositionReminder(int ticks); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MapRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/MapRendererMixin.java index 9a50e5e51b..73f323c29a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MapRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MapRendererMixin.java @@ -8,11 +8,11 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.render.MapRenderState; -import net.minecraft.client.render.MapRenderer; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.item.map.MapDecoration; +import net.minecraft.client.renderer.state.MapRenderState; +import net.minecraft.client.renderer.MapRenderer; +import net.minecraft.client.renderer.SubmitNodeCollector; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.world.level.saveddata.maps.MapDecoration; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -22,13 +22,13 @@ @Mixin(MapRenderer.class) public abstract class MapRendererMixin { - @ModifyExpressionValue(method = "draw", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/MapRenderState;decorations:Ljava/util/List;")) + @ModifyExpressionValue(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/state/MapRenderState;decorations:Ljava/util/List;")) private List getIconsProxy(List original) { return (Modules.get().get(NoRender.class).noMapMarkers()) ? List.of() : original; } - @Inject(method = "draw", at = @At("HEAD"), cancellable = true) - private void onDraw(MapRenderState state, MatrixStack matrices, OrderedRenderCommandQueue queue, boolean skipRenderingDecorations, int light, CallbackInfo ci) { + @Inject(method = "render", at = @At("HEAD"), cancellable = true) + private void onDraw(MapRenderState state, PoseStack matrices, SubmitNodeCollector queue, boolean skipRenderingDecorations, int light, CallbackInfo ci) { if (Modules.get().get(NoRender.class).noMapContents()) ci.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MapTextureManagerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/MapTextureManagerAccessor.java index ff2bf4924f..04863b5a49 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MapTextureManagerAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MapTextureManagerAccessor.java @@ -5,14 +5,14 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.texture.MapTextureManager; -import net.minecraft.component.type.MapIdComponent; -import net.minecraft.item.map.MapState; +import net.minecraft.client.resources.MapTextureManager; +import net.minecraft.world.level.saveddata.maps.MapId; +import net.minecraft.world.level.saveddata.maps.MapItemSavedData; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(MapTextureManager.class) public interface MapTextureManagerAccessor { - @Invoker("getMapTexture") - MapTextureManager.MapTexture meteor$invokeGetMapTexture(MapIdComponent id, MapState state); + @Invoker("getOrCreateMapInstance") + MapTextureManager.MapInstance meteor$invokeGetOrCreateMapInstance(MapId id, MapItemSavedData state); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MessageHandlerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/MessageHandlerMixin.java index 6643158efc..691de0a174 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MessageHandlerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MessageHandlerMixin.java @@ -7,10 +7,10 @@ import com.mojang.authlib.GameProfile; import meteordevelopment.meteorclient.mixininterface.IMessageHandler; -import net.minecraft.client.network.message.MessageHandler; -import net.minecraft.network.message.MessageType; -import net.minecraft.network.message.SignedMessage; -import net.minecraft.text.Text; +import net.minecraft.client.multiplayer.chat.ChatListener; +import net.minecraft.network.chat.ChatType; +import net.minecraft.network.chat.PlayerChatMessage; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -19,18 +19,24 @@ import java.time.Instant; +// TODO(Ravel): can not resolve target class MessageHandler +// TODO(Ravel): can not resolve target class MessageHandler @Mixin(MessageHandler.class) public abstract class MessageHandlerMixin implements IMessageHandler { @Unique private GameProfile sender; - @Inject(method = "processChatMessageInternal", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;Lnet/minecraft/client/gui/hud/MessageIndicator;)V", shift = At.Shift.BEFORE)) - private void onProcessChatMessageInternal_beforeAddMessage(MessageType.Parameters params, SignedMessage message, Text decorated, GameProfile sender, boolean onlyShowSecureChat, Instant receptionTimestamp, CallbackInfoReturnable info) { + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Inject(method = "processChatMessageInternal", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/ChatComponent;addMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/GuiMessageTag;)V", shift = At.Shift.BEFORE)) + private void onProcessChatMessageInternal_beforeAddMessage(ChatType.Bound params, PlayerChatMessage message, Component decorated, GameProfile sender, boolean onlyShowSecureChat, Instant receptionTimestamp, CallbackInfoReturnable info) { this.sender = sender; } - @Inject(method = "processChatMessageInternal", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;Lnet/minecraft/client/gui/hud/MessageIndicator;)V", shift = At.Shift.AFTER)) - private void onProcessChatMessageInternal_afterAddMessage(MessageType.Parameters params, SignedMessage message, Text decorated, GameProfile sender, boolean onlyShowSecureChat, Instant receptionTimestamp, CallbackInfoReturnable info) { + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Inject(method = "processChatMessageInternal", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/ChatComponent;addMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/MessageSignature;Lnet/minecraft/client/GuiMessageTag;)V", shift = At.Shift.AFTER)) + private void onProcessChatMessageInternal_afterAddMessage(ChatType.Bound params, PlayerChatMessage message, Component decorated, GameProfile sender, boolean onlyShowSecureChat, Instant receptionTimestamp, CallbackInfoReturnable info) { this.sender = null; } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftAccessor.java new file mode 100644 index 0000000000..95a5a4b644 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftAccessor.java @@ -0,0 +1,78 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.mojang.authlib.minecraft.UserApiService; +import com.mojang.authlib.yggdrasil.ProfileResult; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.social.PlayerSocialManager; +import net.minecraft.client.ResourceLoadStateTracker; +import net.minecraft.client.multiplayer.ProfileKeyPairManager; +import net.minecraft.client.User; +import net.minecraft.client.multiplayer.chat.report.ReportingContext; +import net.minecraft.client.resources.SkinManager; +import net.minecraft.server.Services; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; + +import java.util.concurrent.CompletableFuture; + +@Mixin(Minecraft.class) +public interface MinecraftAccessor { + @Accessor("fps") + static int meteor$getFps() { + return 0; + } + + @Mutable + @Accessor("user") + void meteor$setUser(User session); + + @Accessor("reloadStateTracker") + ResourceLoadStateTracker meteor$getReloadStateTracker(); + + @Accessor("missTime") + int meteor$getMissTime(); + + @Accessor("missTime") + void meteor$setMissTime(int attackCooldown); + + @Invoker("startAttack") + boolean meteor$leftClick(); + + @Mutable + @Accessor("profileKeyPairManager") + void meteor$setProfileKeyPairManager(ProfileKeyPairManager keys); + + @Mutable + @Accessor("userApiService") + void meteor$setUserApiService(UserApiService apiService); + + @Mutable + @Accessor("skinManager") + void meteor$setSkinManager(SkinManager skinProvider); + + @Mutable + @Accessor("playerSocialManager") + void meteor$setPlayerSocialManager(PlayerSocialManager socialInteractionsManager); + + @Mutable + @Accessor("reportingContext") + void meteor$setReportingContext(ReportingContext abuseReportContext); + + @Mutable + @Accessor("profileFuture") + void meteor$setProfileFuture(CompletableFuture future); + + @Mutable + @Accessor("services") + void meteor$setServices(Services apiServices); + + @Invoker("handleKeybinds") + void meteor$handleInputEvents(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientAccessor.java deleted file mode 100644 index 3be4d25c83..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientAccessor.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.mojang.authlib.minecraft.UserApiService; -import com.mojang.authlib.yggdrasil.ProfileResult; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.SocialInteractionsManager; -import net.minecraft.client.resource.ResourceReloadLogger; -import net.minecraft.client.session.ProfileKeys; -import net.minecraft.client.session.Session; -import net.minecraft.client.session.report.AbuseReportContext; -import net.minecraft.client.texture.PlayerSkinProvider; -import net.minecraft.util.ApiServices; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; -import org.spongepowered.asm.mixin.gen.Invoker; - -import java.util.concurrent.CompletableFuture; - -@Mixin(MinecraftClient.class) -public interface MinecraftClientAccessor { - @Accessor("currentFps") - static int meteor$getFps() { - return 0; - } - - @Mutable - @Accessor("session") - void meteor$setSession(Session session); - - @Accessor("resourceReloadLogger") - ResourceReloadLogger meteor$getResourceReloadLogger(); - - @Accessor("attackCooldown") - int meteor$getAttackCooldown(); - - @Accessor("attackCooldown") - void meteor$setAttackCooldown(int attackCooldown); - - @Invoker("doAttack") - boolean meteor$leftClick(); - - @Mutable - @Accessor("profileKeys") - void meteor$setProfileKeys(ProfileKeys keys); - - @Mutable - @Accessor("userApiService") - void meteor$setUserApiService(UserApiService apiService); - - @Mutable - @Accessor("skinProvider") - void meteor$setSkinProvider(PlayerSkinProvider skinProvider); - - @Mutable - @Accessor("socialInteractionsManager") - void meteor$setSocialInteractionsManager(SocialInteractionsManager socialInteractionsManager); - - @Mutable - @Accessor("abuseReportContext") - void meteor$setAbuseReportContext(AbuseReportContext abuseReportContext); - - @Mutable - @Accessor("gameProfileFuture") - void meteor$setGameProfileFuture(CompletableFuture future); - - @Mutable - @Accessor("apiServices") - void meteor$setApiServices(ApiServices apiServices); - - @Invoker("handleInputEvents") - void meteor$handleInputEvents(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientMixin.java index 56ee42ed5e..6a499094ad 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftClientMixin.java @@ -34,21 +34,21 @@ import meteordevelopment.meteorclient.utils.misc.CPSUtils; import meteordevelopment.meteorclient.utils.misc.MeteorStarscript; import meteordevelopment.meteorclient.utils.network.OnlinePlayers; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.Mouse; -import net.minecraft.client.gl.Framebuffer; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.network.ClientPlayerEntity; -import net.minecraft.client.network.ClientPlayerInteractionManager; -import net.minecraft.client.option.GameOptions; -import net.minecraft.client.option.KeyBinding; -import net.minecraft.client.util.Window; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.hit.HitResult; -import net.minecraft.util.profiler.Profilers; +import net.minecraft.client.Minecraft; +import net.minecraft.client.MouseHandler; +import com.mojang.blaze3d.pipeline.RenderTarget; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.client.Options; +import net.minecraft.client.KeyMapping; +import com.mojang.blaze3d.platform.Window; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.HitResult; +import net.minecraft.util.profiling.Profiler; import org.jetbrains.annotations.Nullable; import org.meteordev.starscript.Script; import org.spongepowered.asm.mixin.*; @@ -60,78 +60,127 @@ import java.util.concurrent.CompletableFuture; +// TODO(Ravel): can not resolve target class MinecraftClient +// TODO(Ravel): can not resolve target class MinecraftClient @Mixin(value = MinecraftClient.class, priority = 1001) public abstract class MinecraftClientMixin implements IMinecraftClient { - @Unique private boolean doItemUseCalled; - @Unique private boolean rightClick; - @Unique private long lastTime; - @Unique private boolean firstFrame; + @Unique + private boolean doItemUseCalled; + @Unique + private boolean rightClick; + @Unique + private long lastTime; + @Unique + private boolean firstFrame; - @Shadow public ClientWorld world; - @Shadow @Final public Mouse mouse; - @Shadow @Final private Window window; - @Shadow public Screen currentScreen; - @Shadow @Final public GameOptions options; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + public ClientLevel world; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + public MouseHandler mouse; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + private Window window; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + public Screen currentScreen; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + public Options options; - @Shadow protected abstract void doItemUse(); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + protected abstract void doItemUse(); + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Nullable - public ClientPlayerInteractionManager interactionManager; + public MultiPlayerGameMode interactionManager; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow private int itemUseCooldown; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Nullable - public ClientPlayerEntity player; + public LocalPlayer player; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final @Mutable - private Framebuffer framebuffer; + private RenderTarget framebuffer; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow protected abstract void handleBlockBreaking(boolean breaking); + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "", at = @At("TAIL")) private void onInit(CallbackInfo info) { MeteorClient.INSTANCE.onInitializeClient(); firstFrame = true; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(at = @At("HEAD"), method = "tick") private void onPreTick(CallbackInfo info) { OnlinePlayers.update(); doItemUseCalled = false; - Profilers.get().push(MeteorClient.MOD_ID + "_pre_update"); + Profiler.get().push(MeteorClient.MOD_ID + "_pre_update"); MeteorClient.EVENT_BUS.post(TickEvent.Pre.get()); - Profilers.get().pop(); + Profiler.get().pop(); if (rightClick && !doItemUseCalled && interactionManager != null) doItemUse(); rightClick = false; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(at = @At("TAIL"), method = "tick") private void onTick(CallbackInfo info) { - Profilers.get().push(MeteorClient.MOD_ID + "_post_update"); + Profiler.get().push(MeteorClient.MOD_ID + "_post_update"); MeteorClient.EVENT_BUS.post(TickEvent.Post.get()); - Profilers.get().pop(); + Profiler.get().pop(); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "doAttack", at = @At("HEAD"), cancellable = true) private void onAttack(CallbackInfoReturnable cir) { CPSUtils.onAttack(); if (MeteorClient.EVENT_BUS.post(DoAttackEvent.get()).isCancelled()) cir.cancel(); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "doItemUse", at = @At("HEAD")) private void onDoItemUse(CallbackInfo info) { doItemUseCalled = true; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "disconnect(Lnet/minecraft/client/gui/screen/Screen;ZZ)V", at = @At("HEAD")) private void onDisconnect(Screen screen, boolean transferring, boolean stopSound, CallbackInfo info) { if (world != null) { @@ -139,9 +188,12 @@ private void onDisconnect(Screen screen, boolean transferring, boolean stopSound } } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "setScreen", at = @At("HEAD"), cancellable = true) private void onSetScreen(Screen screen, CallbackInfo info) { - if (screen instanceof WidgetScreen) screen.mouseMoved(mouse.getX() * window.getScaleFactor(), mouse.getY() * window.getScaleFactor()); + if (screen instanceof WidgetScreen) + screen.mouseMoved(mouse.getX() * window.getScaleFactor(), mouse.getY() * window.getScaleFactor()); OpenScreenEvent event = OpenScreenEvent.get(screen); MeteorClient.EVENT_BUS.post(event); @@ -149,7 +201,9 @@ private void onSetScreen(Screen screen, CallbackInfo info) { if (event.isCancelled()) info.cancel(); } - @WrapOperation(method = "setScreen", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/option/KeyBinding;unpressAll()V")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @WrapOperation(method = "setScreen", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/KeyMapping;releaseAll()V")) private void onSetScreenKeyBindingUnpressAll(Operation op) { Modules modules = Modules.get(); if (modules == null) { @@ -163,8 +217,8 @@ private void onSetScreenKeyBindingUnpressAll(Operation op) { return; } - GameOptions options = MeteorClient.mc.options; - for (KeyBinding kb : KeyBindingAccessor.getKeysById().values()) { + Options options = MeteorClient.mc.options; + for (KeyMapping kb : KeyMappingAccessor.getKeysById().values()) { if (kb == options.forwardKey) continue; if (kb == options.leftKey) continue; if (kb == options.rightKey) continue; @@ -172,11 +226,13 @@ private void onSetScreenKeyBindingUnpressAll(Operation op) { if (guimove.sneak.get() && kb == options.sneakKey) continue; if (guimove.sprint.get() && kb == options.sprintKey) continue; if (guimove.jump.get() && kb == options.jumpKey) continue; - ((KeyBindingAccessor) kb).meteor$invokeReset(); + ((KeyMappingAccessor) kb).meteor$invokeRelease(); } } - @Inject(method = "doItemUse", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemStack;isItemEnabled(Lnet/minecraft/resource/featuretoggle/FeatureSet;)Z")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Inject(method = "doItemUse", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isItemEnabled(Lnet/minecraft/world/flag/FeatureFlagSet;)Z")) private void onDoItemUseHand(CallbackInfo ci, @Local ItemStack itemStack) { FastUse fastUse = Modules.get().get(FastUse.class); if (fastUse.isActive()) { @@ -184,22 +240,30 @@ private void onDoItemUseHand(CallbackInfo ci, @Local ItemStack itemStack) { } } - @Inject(method = "doItemUse", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Hand;values()[Lnet/minecraft/util/Hand;"), cancellable = true) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Inject(method = "doItemUse", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/InteractionHand;values()[Lnet/minecraft/world/InteractionHand;"), cancellable = true) private void onDoItemUseBeforeHands(CallbackInfo ci) { if (MeteorClient.EVENT_BUS.post(DoItemUseEvent.get()).isCancelled()) ci.cancel(); } - @ModifyExpressionValue(method = "doItemUse", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;crosshairTarget:Lnet/minecraft/util/hit/HitResult;", ordinal = 1)) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "doItemUse", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Minecraft;hitResult:Lnet/minecraft/world/phys/HitResult;", ordinal = 1)) private HitResult doItemUseMinecraftClientCrosshairTargetProxy(HitResult original) { return MeteorClient.EVENT_BUS.post(ItemUseCrosshairTargetEvent.get(original)).target; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyReturnValue(method = "reloadResources(ZLnet/minecraft/client/MinecraftClient$LoadingContext;)Ljava/util/concurrent/CompletableFuture;", at = @At("RETURN")) private CompletableFuture onReloadResourcesNewCompletableFuture(CompletableFuture original) { return original.thenRun(() -> MeteorClient.EVENT_BUS.post(ResourcePacksReloadedEvent.get())); } - @ModifyArg(method = "updateWindowTitle", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/Window;setTitle(Ljava/lang/String;)V")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyArg(method = "updateWindowTitle", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/Window;setTitle(Ljava/lang/String;)V")) private String setTitle(String original) { if (Config.get() == null || !Config.get().customWindowTitle.get()) return original; @@ -214,9 +278,11 @@ private String setTitle(String original) { return customTitle; } - // Have to add this condition if we want to draw back a bow using packets, without it getting cancelled by vanilla code - @WrapWithCondition(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;stopUsingItem(Lnet/minecraft/entity/player/PlayerEntity;)V")) - private boolean wrapStopUsing(ClientPlayerInteractionManager instance, PlayerEntity player) { + // TODO(Ravel): no target class +// TODO(Ravel): no target class +// Have to add this condition if we want to draw back a bow using packets, without it getting cancelled by vanilla code + @WrapWithCondition(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;releaseUsingItem(Lnet/minecraft/world/entity/player/Player;)V")) + private boolean wrapStopUsing(MultiPlayerGameMode instance, LocalPlayer player) { return HB$stopUsingItem(); } @@ -226,6 +292,8 @@ private boolean wrapStopUsing(ClientPlayerInteractionManager instance, PlayerEnt return !b.isActive() || !b.drawingBow; } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "onResolutionChanged", at = @At("TAIL")) private void onResolutionChanged(CallbackInfo info) { MeteorClient.EVENT_BUS.post(ResolutionChangedEvent.get()); @@ -233,6 +301,8 @@ private void onResolutionChanged(CallbackInfo info) { // Time delta + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "render", at = @At("HEAD")) private void onRender(CallbackInfo info) { long time = System.currentTimeMillis(); @@ -248,34 +318,44 @@ private void onRender(CallbackInfo info) { // Multitask - @ModifyExpressionValue(method = "doItemUse", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;isBreakingBlock()Z")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "doItemUse", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;isDestroying()Z")) private boolean doItemUseModifyIsBreakingBlock(boolean original) { return !Modules.get().isActive(Multitask.class) && original; } - @ModifyExpressionValue(method = "handleBlockBreaking", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isUsingItem()Z")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "handleBlockBreaking", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isUsingItem()Z")) private boolean handleBlockBreakingModifyIsUsingItem(boolean original) { return !Modules.get().isActive(Multitask.class) && original; } - @ModifyExpressionValue(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isUsingItem()Z", ordinal = 0)) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isUsingItem()Z", ordinal = 0)) private boolean handleInputEventsModifyIsUsingItem(boolean original) { return !Modules.get().get(Multitask.class).attackingEntities() && original; } - @Inject(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isUsingItem()Z", ordinal = 0, shift = At.Shift.BEFORE)) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Inject(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;isUsingItem()Z", ordinal = 0, shift = At.Shift.BEFORE)) private void handleInputEventsInjectStopUsingItem(CallbackInfo info) { if (Modules.get().get(Multitask.class).attackingEntities() && player.isUsingItem()) { if (!options.useKey.isPressed() && HB$stopUsingItem()) interactionManager.stopUsingItem(player); //noinspection StatementWithEmptyBody - while (options.useKey.wasPressed()); + while (options.useKey.wasPressed()) ; } } // Glow esp + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyReturnValue(method = "hasOutline", at = @At("RETURN")) - private boolean hasOutlineModifyIsOutline(boolean original, Entity entity) { + private boolean hasOutlineModifyIsOutline(boolean original, LocalPlayer entity) { ESP esp = Modules.get().get(ESP.class); if (esp == null) return original; if (!esp.isGlow() || esp.shouldSkip(entity)) return original; @@ -289,18 +369,24 @@ private boolean hasOutlineModifyIsOutline(boolean original, Entity entity) { @Unique private boolean isBreaking = false; - @WrapWithCondition(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;handleInputEvents()V")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @WrapWithCondition(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;handleKeybinds()V")) private boolean wrapHandleInputEvents(MinecraftClient instance) { return !Modules.get().get(InventoryTweaks.class).frameInput(); } - @WrapWithCondition(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;handleBlockBreaking(Z)V")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @WrapWithCondition(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;continueAttack(Z)V")) private boolean wrapHandleBlockBreaking(MinecraftClient instance, boolean breaking) { isBreaking = breaking; return !Modules.get().get(InventoryTweaks.class).frameInput(); } - @Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;handleInputEvents()V", shift = At.Shift.AFTER)) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;handleKeybinds()V", shift = At.Shift.AFTER)) private void afterHandleInputEvents(CallbackInfo ci) { if (!Modules.get().get(InventoryTweaks.class).frameInput()) return; @@ -316,7 +402,7 @@ private void afterHandleInputEvents(CallbackInfo ci) { } @Override - public void meteor$setFramebuffer(Framebuffer framebuffer) { + public void meteor$setFramebuffer(RenderTarget framebuffer) { this.framebuffer = framebuffer; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftServerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftServerAccessor.java index bda17fad9e..c3aa40ef71 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftServerAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MinecraftServerAccessor.java @@ -6,12 +6,12 @@ package meteordevelopment.meteorclient.mixin; import net.minecraft.server.MinecraftServer; -import net.minecraft.world.level.storage.LevelStorage; +import net.minecraft.world.level.storage.LevelStorageSource; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; @Mixin(MinecraftServer.class) public interface MinecraftServerAccessor { - @Accessor("session") - LevelStorage.Session meteor$getSession(); + @Accessor("storageSource") + LevelStorageSource.LevelStorageAccess meteor$getStorageSource(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkManagerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/MobBucketItemAccessor.java similarity index 57% rename from src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkManagerAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/MobBucketItemAccessor.java index f110d1f4fa..a51ca2cb06 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ClientChunkManagerAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MobBucketItemAccessor.java @@ -5,12 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.world.ClientChunkManager; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.MobBucketItem; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(ClientChunkManager.class) -public interface ClientChunkManagerAccessor { - @Accessor("chunks") - ClientChunkManager.ClientChunkMap meteor$getChunks(); +@Mixin(MobBucketItem.class) +public interface MobBucketItemAccessor { + @Accessor("type") + EntityType meteor$getType(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/StatusEffectFogModifierMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/MobEffectFogEnvironmentMixin.java similarity index 57% rename from src/main/java/meteordevelopment/meteorclient/mixin/StatusEffectFogModifierMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/MobEffectFogEnvironmentMixin.java index d70015a613..c15ed26eaa 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/StatusEffectFogModifierMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MobEffectFogEnvironmentMixin.java @@ -8,24 +8,24 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.client.render.fog.StatusEffectFogModifier; -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.entity.effect.StatusEffects; -import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.client.renderer.fog.environment.MobEffectFogEnvironment; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.core.Holder; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; -@Mixin(StatusEffectFogModifier.class) -public abstract class StatusEffectFogModifierMixin { +@Mixin(MobEffectFogEnvironment.class) +public abstract class MobEffectFogEnvironmentMixin { @Shadow - public abstract RegistryEntry getStatusEffect(); + public abstract Holder getMobEffect(); @ModifyReturnValue(method = "shouldApply", at = @At("RETURN")) private boolean modifyShouldApply(boolean original) { NoRender noRender = Modules.get().get(NoRender.class); - if (getStatusEffect() == StatusEffects.BLINDNESS) return original && !noRender.noBlindness(); - if (getStatusEffect() == StatusEffects.DARKNESS) return original && !noRender.noDarkness(); + if (getMobEffect() == MobEffects.BLINDNESS) return original && !noRender.noBlindness(); + if (getMobEffect() == MobEffects.DARKNESS) return original && !noRender.noDarkness(); return original; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/StatusEffectInstanceAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/MobEffectInstanceAccessor.java similarity index 72% rename from src/main/java/meteordevelopment/meteorclient/mixin/StatusEffectInstanceAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/MobEffectInstanceAccessor.java index 98f26237e0..71a0857408 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/StatusEffectInstanceAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MobEffectInstanceAccessor.java @@ -5,12 +5,12 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.world.effect.MobEffectInstance; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(StatusEffectInstance.class) -public interface StatusEffectInstanceAccessor { +@Mixin(MobEffectInstance.class) +public interface MobEffectInstanceAccessor { @Accessor("duration") void meteor$setDuration(int duration); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/StatusEffectInstanceMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/MobEffectInstanceMixin.java similarity index 73% rename from src/main/java/meteordevelopment/meteorclient/mixin/StatusEffectInstanceMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/MobEffectInstanceMixin.java index dd78eaed28..dd687b77bc 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/StatusEffectInstanceMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MobEffectInstanceMixin.java @@ -8,19 +8,19 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.player.PotionSaver; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.world.effect.MobEffectInstance; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(StatusEffectInstance.class) -public abstract class StatusEffectInstanceMixin { - @Inject(method = "updateDuration", at = @At("HEAD"), cancellable = true) +@Mixin(MobEffectInstance.class) +public abstract class MobEffectInstanceMixin { + @Inject(method = "tickDownDuration", at = @At("HEAD"), cancellable = true) private void tick(CallbackInfo info) { if (!Utils.canUpdate()) return; - if (Modules.get().get(PotionSaver.class).shouldFreeze(((StatusEffectInstance) (Object) this).getEffectType().value())) { + if (Modules.get().get(PotionSaver.class).shouldFreeze(((MobEffectInstance) (Object) this).getEffectType().value())) { info.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MobEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/MobMixin.java similarity index 78% rename from src/main/java/meteordevelopment/meteorclient/mixin/MobEntityMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/MobMixin.java index 46ef50abaa..c8471f7f19 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MobEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MobMixin.java @@ -8,13 +8,13 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.EntityControl; -import net.minecraft.entity.mob.MobEntity; +import net.minecraft.world.entity.Mob; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(MobEntity.class) -public abstract class MobEntityMixin { - @ModifyReturnValue(method = "hasSaddleEquipped", at = @At("RETURN")) +@Mixin(Mob.class) +public abstract class MobMixin { + @ModifyReturnValue(method = "isSaddled", at = @At("RETURN")) private boolean hasSaddleEquipped(boolean original) { return Modules.get().get(EntityControl.class).spoofSaddle() || original; } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/BlockModelRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ModelBlockRendererMixin.java similarity index 54% rename from src/main/java/meteordevelopment/meteorclient/mixin/BlockModelRendererMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ModelBlockRendererMixin.java index ef7caabb26..d63cb65b12 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/BlockModelRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ModelBlockRendererMixin.java @@ -8,14 +8,14 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.Xray; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.block.BlockModelRenderer; -import net.minecraft.client.render.model.BlockModelPart; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.BlockRenderView; +import net.minecraft.world.level.block.state.BlockState; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.block.ModelBlockRenderer; +import net.minecraft.client.renderer.block.model.BlockModelPart; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockAndTintGetter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -26,27 +26,27 @@ import java.util.List; -@Mixin(BlockModelRenderer.class) -public abstract class BlockModelRendererMixin { +@Mixin(ModelBlockRenderer.class) +public abstract class ModelBlockRendererMixin { @Unique private final ThreadLocal alphas = new ThreadLocal<>(); - @Inject(method = {"renderSmooth", "renderFlat"}, at = @At("HEAD"), cancellable = true) - private void onRenderSmooth(BlockRenderView world, List parts, BlockState state, BlockPos pos, MatrixStack matrices, VertexConsumer vertexConsumer, boolean cull, int overlay, CallbackInfo ci) { + @Inject(method = {"tesselateWithAO", "tesselateWithoutAO"}, at = @At("HEAD"), cancellable = true) + private void onRenderSmooth(BlockAndTintGetter world, List parts, BlockState state, BlockPos pos, PoseStack matrices, VertexConsumer vertexConsumer, boolean cull, int overlay, CallbackInfo ci) { int alpha = Xray.getAlpha(state, pos); if (alpha == 0) ci.cancel(); else alphas.set(alpha); } - @ModifyArgs(method = "renderQuad", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/VertexConsumer;quad(Lnet/minecraft/client/util/math/MatrixStack$Entry;Lnet/minecraft/client/render/model/BakedQuad;[FFFFF[II)V")) + @ModifyArgs(method = "putQuadData", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/VertexConsumer;putBulkData(Lcom/mojang/blaze3d/vertex/PoseStack$Pose;Lnet/minecraft/client/renderer/block/model/BakedQuad;[FFFFF[II)V")) private void modifyXrayAlpha(final Args args) { final int alpha = alphas.get(); args.set(6, alpha == -1 ? args.get(6) : alpha / 255f); } - @ModifyReturnValue(method = "shouldDrawFace", at = @At("RETURN")) - private static boolean modifyShouldDrawFace(boolean original, BlockRenderView world, BlockState state, boolean cull, Direction side, BlockPos pos) { + @ModifyReturnValue(method = "shouldRenderFace", at = @At("RETURN")) + private static boolean modifyShouldDrawFace(boolean original, BlockAndTintGetter world, BlockState state, boolean cull, Direction side, BlockPos pos) { Xray xray = Modules.get().get(Xray.class); if (xray.isActive()) { diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MouseMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/MouseHandlerMixin.java similarity index 61% rename from src/main/java/meteordevelopment/meteorclient/mixin/MouseMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/MouseHandlerMixin.java index 692a21f29a..f9171d45f8 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MouseMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MouseHandlerMixin.java @@ -10,11 +10,11 @@ import meteordevelopment.meteorclient.events.meteor.MouseScrollEvent; import meteordevelopment.meteorclient.utils.misc.input.Input; import meteordevelopment.meteorclient.utils.misc.input.KeyAction; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.Mouse; -import net.minecraft.client.gui.Click; -import net.minecraft.client.input.MouseInput; -import net.minecraft.client.util.Window; +import net.minecraft.client.Minecraft; +import net.minecraft.client.MouseHandler; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.input.MouseButtonInfo; +import com.mojang.blaze3d.platform.Window; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -24,27 +24,27 @@ import static org.lwjgl.glfw.GLFW.GLFW_RELEASE; -@Mixin(Mouse.class) -public abstract class MouseMixin { +@Mixin(MouseHandler.class) +public abstract class MouseHandlerMixin { @Shadow - public abstract double getScaledX(Window window); + public abstract double getScaledXPos(Window window); @Shadow - public abstract double getScaledY(Window window); + public abstract double getScaledYPos(Window window); @Shadow @Final - private MinecraftClient client; + private Minecraft minecraft; - @Inject(method = "onMouseButton", at = @At("HEAD"), cancellable = true) - private void onMouseButton(long window, MouseInput mouseInput, int action, CallbackInfo ci) { + @Inject(method = "onButton", at = @At("HEAD"), cancellable = true) + private void onMouseButton(long window, MouseButtonInfo mouseInput, int action, CallbackInfo ci) { Input.setButtonState(mouseInput.button(), action != GLFW_RELEASE); - Click click = new Click(getScaledX(client.getWindow()), getScaledY(client.getWindow()), mouseInput); + MouseButtonEvent click = new Click(getScaledXPos(minecraft.getWindow()), getScaledYPos(minecraft.getWindow()), mouseInput); if (MeteorClient.EVENT_BUS.post(MouseClickEvent.get(click, KeyAction.get(action))).isCancelled()) ci.cancel(); } - @Inject(method = "onMouseScroll", at = @At("HEAD"), cancellable = true) + @Inject(method = "onScroll", at = @At("HEAD"), cancellable = true) private void onMouseScroll(long window, double horizontal, double vertical, CallbackInfo info) { if (MeteorClient.EVENT_BUS.post(MouseScrollEvent.get(vertical)).isCancelled()) info.cancel(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MultiPlayerGameModeAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/MultiPlayerGameModeAccessor.java new file mode 100644 index 0000000000..5459504d5d --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MultiPlayerGameModeAccessor.java @@ -0,0 +1,23 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.client.multiplayer.MultiPlayerGameMode; +import net.minecraft.core.BlockPos; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(MultiPlayerGameMode.class) +public interface MultiPlayerGameModeAccessor { + @Accessor("destroyProgress") + float meteor$getBreakingProgress(); + + @Accessor("destroyProgress") + void meteor$setDestroyProgress(float progress); + + @Accessor("destroyBlockPos") + BlockPos meteor$getCurrentBreakingBlockPos(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MutableTextMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/MutableComponentMixin.java similarity index 63% rename from src/main/java/meteordevelopment/meteorclient/mixin/MutableTextMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/MutableComponentMixin.java index e5a84e3e70..fd460fc824 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MutableTextMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/MutableComponentMixin.java @@ -6,19 +6,19 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.IText; -import net.minecraft.text.MutableText; -import net.minecraft.util.Language; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.locale.Language; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -@Mixin(MutableText.class) -public abstract class MutableTextMixin implements IText { +@Mixin(MutableComponent.class) +public abstract class MutableComponentMixin implements IText { @Shadow - private @Nullable Language language; + private @Nullable Language decomposedWith; @Override public void meteor$invalidateCache() { - this.language = null; + this.decomposedWith = null; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GameOptionsMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/OptionsMixin.java similarity index 63% rename from src/main/java/meteordevelopment/meteorclient/mixin/GameOptionsMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/OptionsMixin.java index 1b98414e94..1a02c4fca1 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/GameOptionsMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/OptionsMixin.java @@ -10,10 +10,10 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.Freecam; import meteordevelopment.meteorclient.utils.misc.input.KeyBinds; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.option.GameOptions; -import net.minecraft.client.option.KeyBinding; -import net.minecraft.client.option.Perspective; +import net.minecraft.client.Minecraft; +import net.minecraft.client.Options; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.CameraType; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -25,17 +25,20 @@ import java.io.File; -@Mixin(GameOptions.class) -public abstract class GameOptionsMixin { - @Shadow @Final @Mutable public KeyBinding[] allKeys; +@Mixin(Options.class) +public abstract class OptionsMixin { + @Shadow + @Final + @Mutable + public KeyMapping[] keyMappings; - @Inject(method = "", at = @At(value = "FIELD", target = "Lnet/minecraft/client/option/GameOptions;allKeys:[Lnet/minecraft/client/option/KeyBinding;", opcode = Opcodes.PUTFIELD, shift = At.Shift.AFTER)) - private void onInitAfterKeysAll(MinecraftClient client, File optionsFile, CallbackInfo info) { - allKeys = KeyBinds.apply(allKeys); + @Inject(method = "", at = @At(value = "FIELD", target = "Lnet/minecraft/client/Options;keyMappings:[Lnet/minecraft/client/KeyMapping;", opcode = Opcodes.PUTFIELD, shift = At.Shift.AFTER)) + private void onInitAfterKeysAll(Minecraft client, File optionsFile, CallbackInfo info) { + keyMappings = KeyBinds.apply(keyMappings); } - @Inject(method = "setPerspective", at = @At("HEAD"), cancellable = true) - private void setPerspective(Perspective perspective, CallbackInfo info) { + @Inject(method = "setCameraType", at = @At("HEAD"), cancellable = true) + private void setPerspective(CameraType perspective, CallbackInfo info) { if (Modules.get() == null) return; // nothing is loaded yet, shouldersurfing compat ChangePerspectiveEvent event = MeteorClient.EVENT_BUS.post(ChangePerspectiveEvent.get(perspective)); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ParticleEngineMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ParticleEngineMixin.java new file mode 100644 index 0000000000..d7ad13ddf1 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ParticleEngineMixin.java @@ -0,0 +1,37 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import meteordevelopment.meteorclient.MeteorClient; +import meteordevelopment.meteorclient.events.world.ParticleEvent; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleEngine; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleTypes; +import org.jetbrains.annotations.Nullable; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ParticleEngine.class) +public abstract class ParticleEngineMixin { + @Shadow + @Nullable + protected abstract Particle makeParticle(T parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ); + + @Inject(method = "createParticle(Lnet/minecraft/core/particles/ParticleOptions;DDDDDD)Lnet/minecraft/client/particle/Particle;", at = @At("HEAD"), cancellable = true) + private void onAddParticle(ParticleOptions parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, CallbackInfoReturnable info) { + ParticleEvent event = MeteorClient.EVENT_BUS.post(ParticleEvent.get(parameters)); + + if (event.isCancelled()) { + if (parameters.getType() == ParticleTypes.FLASH) + info.setReturnValue(makeParticle(parameters, x, y, z, velocityX, velocityY, velocityZ)); + else info.cancel(); + } + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ParticleManagerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ParticleManagerMixin.java deleted file mode 100644 index 2167e68517..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ParticleManagerMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import meteordevelopment.meteorclient.MeteorClient; -import meteordevelopment.meteorclient.events.world.ParticleEvent; -import net.minecraft.client.particle.Particle; -import net.minecraft.client.particle.ParticleManager; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.particle.ParticleTypes; -import org.jetbrains.annotations.Nullable; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -@Mixin(ParticleManager.class) -public abstract class ParticleManagerMixin { - @Shadow - @Nullable - protected abstract Particle createParticle(T parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ); - - @Inject(method = "addParticle(Lnet/minecraft/particle/ParticleEffect;DDDDDD)Lnet/minecraft/client/particle/Particle;", at = @At("HEAD"), cancellable = true) - private void onAddParticle(ParticleEffect parameters, double x, double y, double z, double velocityX, double velocityY, double velocityZ, CallbackInfoReturnable info) { - ParticleEvent event = MeteorClient.EVENT_BUS.post(ParticleEvent.get(parameters)); - - if (event.isCancelled()) { - if (parameters.getType() == ParticleTypes.FLASH) info.setReturnValue(createParticle(parameters, x, y, z, velocityX, velocityY, velocityZ)); - else info.cancel(); - } - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerAccessor.java similarity index 54% rename from src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/PlayerAccessor.java index e63281531e..62f7bfeeea 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerAccessor.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.entity.EntityPose; -import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.player.Player; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(PlayerEntity.class) -public interface PlayerEntityAccessor { - @Invoker("canChangeIntoPose") - boolean meteor$canChangeIntoPose(EntityPose pose); +@Mixin(Player.class) +public interface PlayerAccessor { + @Invoker("canPlayerFitWithinBlocksAndEntitiesWhen") + boolean meteor$canChangeIntoPose(Pose pose); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityRendererMixin.java deleted file mode 100644 index 3045ad7d39..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityRendererMixin.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; -import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; -import meteordevelopment.meteorclient.mixininterface.IVec3d; -import meteordevelopment.meteorclient.systems.modules.Modules; -import meteordevelopment.meteorclient.systems.modules.render.Chams; -import meteordevelopment.meteorclient.utils.player.Rotations; -import net.minecraft.client.model.ModelPart; -import net.minecraft.client.network.ClientPlayerLikeEntity; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.RenderLayers; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.entity.EntityRendererFactory; -import net.minecraft.client.render.entity.LivingEntityRenderer; -import net.minecraft.client.render.entity.PlayerEntityRenderer; -import net.minecraft.client.render.entity.model.PlayerEntityModel; -import net.minecraft.client.render.entity.state.PlayerEntityRenderState; -import net.minecraft.client.texture.Sprite; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.PlayerLikeEntity; -import net.minecraft.util.Identifier; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import static meteordevelopment.meteorclient.MeteorClient.mc; - -@Mixin(PlayerEntityRenderer.class) -public abstract class PlayerEntityRendererMixin - extends LivingEntityRenderer { - // Chams - - @Unique - private Chams chams; - - public PlayerEntityRendererMixin(EntityRendererFactory.Context ctx, PlayerEntityModel model, float shadowRadius) { - super(ctx, model, shadowRadius); - } - - @Inject(method = "", at = @At("RETURN")) - private void init$chams(CallbackInfo info) { - chams = Modules.get().get(Chams.class); - } - - // Chams - Player scale - - @Inject(method = "updateRenderState(Lnet/minecraft/entity/PlayerLikeEntity;Lnet/minecraft/client/render/entity/state/PlayerEntityRenderState;F)V", at = @At("RETURN")) - private void updateRenderState$scale(AvatarlikeEntity player, PlayerEntityRenderState state, float f, CallbackInfo ci) { - if (!chams.isActive() || !chams.players.get()) return; - if (chams.ignoreSelf.get() && player == mc.player) return; - - float v = chams.playersScale.get().floatValue(); - state.baseScale *= v; - - if (state.nameLabelPos != null) - ((IVec3d) state.nameLabelPos).meteor$setY(state.nameLabelPos.y + (player.getHeight() * v - player.getHeight())); - } - - // Chams - Hand Texture - - @ModifyExpressionValue(method = "renderArm", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/RenderLayers;entityTranslucent(Lnet/minecraft/util/Identifier;)Lnet/minecraft/client/render/RenderLayer;")) - private RenderLayer renderArm$texture(RenderLayer original, MatrixStack matrixStack, OrderedRenderCommandQueue entityRenderCommandQueue, int light, Identifier skinTexture, ModelPart modelPart, boolean sleeveVisible) { - if (chams.isActive() && chams.hand.get()) { - Identifier texture = chams.handTexture.get() ? skinTexture : Chams.BLANK; - return RenderLayers.entityTranslucent(texture); - } - - return original; - } - - // Chams - Hand Color - - @WrapWithCondition(method = "renderArm", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/command/OrderedRenderCommandQueue;submitModelPart(Lnet/minecraft/client/model/ModelPart;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/RenderLayer;IILnet/minecraft/client/texture/Sprite;)V")) - private boolean renderArm$color(OrderedRenderCommandQueue instance, ModelPart modelPart, MatrixStack matrixStack, RenderLayer renderLayer, int light, int uv, Sprite sprite) { - if (chams.isActive() && chams.hand.get()) { - instance.submitModelPart(modelPart, matrixStack, renderLayer, light, uv, null, chams.handColor.get().getPacked(), null); - return false; - } - - return true; - } - - // Rotations - - @Inject(method = "updateRenderState(Lnet/minecraft/entity/PlayerLikeEntity;Lnet/minecraft/client/render/entity/state/PlayerEntityRenderState;F)V", at = @At("RETURN")) - private void updateRenderState$rotations(AvatarlikeEntity player, PlayerEntityRenderState state, float f, CallbackInfo info) { - if (Rotations.rotating && player == mc.player) { - state.relativeHeadYaw = 0; - state.bodyYaw = Rotations.serverYaw; - state.pitch = Rotations.serverPitch; - } - } -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerListEntryMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerInfoMixin.java similarity index 58% rename from src/main/java/meteordevelopment/meteorclient/mixin/PlayerListEntryMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/PlayerInfoMixin.java index 6b330236b2..864dcceb8e 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerListEntryMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerInfoMixin.java @@ -8,26 +8,26 @@ import com.mojang.authlib.GameProfile; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.player.NameProtect; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.client.util.DefaultSkinHelper; -import net.minecraft.entity.player.SkinTextures; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.client.resources.DefaultPlayerSkin; +import net.minecraft.world.entity.player.PlayerSkin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(PlayerListEntry.class) -public abstract class PlayerListEntryMixin { +@Mixin(PlayerInfo.class) +public abstract class PlayerInfoMixin { @Shadow public abstract GameProfile getProfile(); - @Inject(method = "getSkinTextures", at = @At("HEAD"), cancellable = true) - private void onGetTexture(CallbackInfoReturnable info) { - if (getProfile().name().equals(MinecraftClient.getInstance().getSession().getUsername())) { + @Inject(method = "getSkin", at = @At("HEAD"), cancellable = true) + private void onGetTexture(CallbackInfoReturnable info) { + if (getProfile().name().equals(Minecraft.getInstance().getSession().getUsername())) { if (Modules.get().get(NameProtect.class).skinProtect()) { - info.setReturnValue(DefaultSkinHelper.getSkinTextures(getProfile())); + info.setReturnValue(DefaultPlayerSkin.getSkinTextures(getProfile())); } } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerInteractEntityC2SPacketMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerInteractEntityC2SPacketMixin.java index 458e49a6e5..88e8ff05cd 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerInteractEntityC2SPacketMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerInteractEntityC2SPacketMixin.java @@ -9,8 +9,8 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.NoSlow; import meteordevelopment.meteorclient.systems.modules.movement.Sneak; -import net.minecraft.entity.Entity; -import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; +import net.minecraft.world.entity.Entity; +import net.minecraft.network.protocol.game.ServerboundInteractPacket; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -19,10 +19,20 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; +// TODO(Ravel): can not resolve target class PlayerInteractEntityC2SPacket +// TODO(Ravel): can not resolve target class PlayerInteractEntityC2SPacket @Mixin(PlayerInteractEntityC2SPacket.class) public abstract class PlayerInteractEntityC2SPacketMixin implements IPlayerInteractEntityC2SPacket { - @Shadow @Final private PlayerInteractEntityC2SPacket.InteractTypeHandler type; - @Shadow @Final private int entityId; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + private PlayerInteractEntityC2SPacket.InteractTypeHandler type; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + private int entityId; @Override public PlayerInteractEntityC2SPacket.InteractType meteor$getType() { @@ -34,6 +44,8 @@ public abstract class PlayerInteractEntityC2SPacketMixin implements IPlayerInter return mc.world.getEntityById(entityId); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @ModifyVariable(method = "(IZLnet/minecraft/network/packet/c2s/play/PlayerInteractEntityC2SPacket$InteractTypeHandler;)V", at = @At("HEAD"), ordinal = 0, argsOnly = true) private static boolean setSneaking(boolean sneaking) { return Modules.get().get(Sneak.class).doPacket() || Modules.get().get(NoSlow.class).airStrict() || sneaking; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerMixin.java similarity index 75% rename from src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/PlayerMixin.java index 745ced14c4..abe2f6ce6f 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerMixin.java @@ -17,17 +17,17 @@ import meteordevelopment.meteorclient.systems.modules.player.Reach; import meteordevelopment.meteorclient.systems.modules.player.SpeedMine; import meteordevelopment.meteorclient.utils.world.BlockUtils; -import net.minecraft.block.BlockState; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.ItemEntity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerAbilities; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.World; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Abilities; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -36,16 +36,16 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; -@Mixin(PlayerEntity.class) -public abstract class PlayerEntityMixin extends LivingEntity { +@Mixin(Player.class) +public abstract class PlayerMixin extends LivingEntity { @Shadow - public abstract PlayerAbilities getAbilities(); + public abstract Abilities getAbilities(); - protected PlayerEntityMixin(EntityType entityType, World world) { + protected PlayerMixin(EntityType entityType, Level world) { super(entityType, world); } - @Inject(method = "clipAtLedge", at = @At("HEAD"), cancellable = true) + @Inject(method = "isStayingOnGroundSurface", at = @At("HEAD"), cancellable = true) protected void clipAtLedge(CallbackInfoReturnable info) { if (!getEntityWorld().isClient()) return; @@ -53,7 +53,7 @@ protected void clipAtLedge(CallbackInfoReturnable info) { if (event.isSet()) info.setReturnValue(event.isClip()); } - @Inject(method = "dropItem", at = @At("HEAD"), cancellable = true) + @Inject(method = "drop", at = @At("HEAD"), cancellable = true) private void onDropItem(ItemStack stack, boolean retainOwnership, CallbackInfoReturnable cir) { if (getEntityWorld().isClient() && !stack.isEmpty()) { if (MeteorClient.EVENT_BUS.post(DropItemsEvent.get(stack)).isCancelled()) cir.setReturnValue(null); @@ -70,12 +70,13 @@ private void onIsCreative(CallbackInfoReturnable info) { if (mc.getNetworkHandler() == null) info.setReturnValue(false); } - @ModifyReturnValue(method = "getBlockBreakingSpeed", at = @At(value = "RETURN")) + @ModifyReturnValue(method = "getDestroySpeed", at = @At(value = "RETURN")) public float onGetBlockBreakingSpeed(float breakSpeed, BlockState block) { if (!getEntityWorld().isClient()) return breakSpeed; SpeedMine speedMine = Modules.get().get(SpeedMine.class); - if (!speedMine.isActive() || speedMine.mode.get() != SpeedMine.Mode.Normal || !speedMine.filter(block.getBlock())) return breakSpeed; + if (!speedMine.isActive() || speedMine.mode.get() != SpeedMine.Mode.Normal || !speedMine.filter(block.getBlock())) + return breakSpeed; float breakSpeedMod = (float) (breakSpeed * speedMine.modifier.get()); @@ -114,22 +115,22 @@ private void onGetOffGroundSpeed(CallbackInfoReturnable info) { if (speed != -1) info.setReturnValue(speed); } - @WrapWithCondition(method = "knockbackTarget", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;setVelocity(Lnet/minecraft/util/math/Vec3d;)V")) - private boolean keepSprint$setVelocity(PlayerEntity instance, Vec3d vec3d) { + @WrapWithCondition(method = "knockbackTarget", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;setVelocity(Lnet/minecraft/world/phys/Vec3;)V")) + private boolean keepSprint$setVelocity(Player instance, Vec3 vec3d) { return Modules.get().get(Sprint.class).stopSprinting(); } - @WrapWithCondition(method = "knockbackTarget", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;setSprinting(Z)V")) - private boolean keepSprint$setSprinting(PlayerEntity instance, boolean b) { + @WrapWithCondition(method = "knockbackTarget", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;setSprinting(Z)V")) + private boolean keepSprint$setSprinting(Player instance, boolean b) { return Modules.get().get(Sprint.class).stopSprinting(); } - @ModifyReturnValue(method = "getBlockInteractionRange", at = @At("RETURN")) + @ModifyReturnValue(method = "blockInteractionRange", at = @At("RETURN")) private double modifyBlockInteractionRange(double original) { return Math.max(0, original + Modules.get().get(Reach.class).blockReach()); } - @ModifyReturnValue(method = "getEntityInteractionRange", at = @At("RETURN")) + @ModifyReturnValue(method = "entityInteractionRange", at = @At("RETURN")) private double modifyEntityInteractionRange(double original) { return Math.max(0, original + Modules.get().get(Reach.class).entityReach()); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerMoveC2SPacketMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerMoveC2SPacketMixin.java index e056bdf71d..13d6c73ca2 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerMoveC2SPacketMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerMoveC2SPacketMixin.java @@ -6,17 +6,24 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.IPlayerMoveC2SPacket; -import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; +// TODO(Ravel): can not resolve target class PlayerMoveC2SPacket +// TODO(Ravel): can not resolve target class PlayerMoveC2SPacket @Mixin(PlayerMoveC2SPacket.class) public abstract class PlayerMoveC2SPacketMixin implements IPlayerMoveC2SPacket { - @Unique private int tag; + @Unique + private int tag; @Override - public void meteor$setTag(int tag) { this.tag = tag; } + public void meteor$setTag(int tag) { + this.tag = tag; + } @Override - public int meteor$getTag() { return this.tag; } + public int meteor$getTag() { + return this.tag; + } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerSkinProviderAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerSkinProviderAccessor.java deleted file mode 100644 index c6343ce791..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerSkinProviderAccessor.java +++ /dev/null @@ -1,16 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.client.texture.PlayerSkinProvider; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(PlayerSkinProvider.class) -public interface PlayerSkinProviderAccessor { - @Accessor("skinCache") - PlayerSkinProvider.FileCache meteor$getSkinCache(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerListHudMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerTabOverlayMixin.java similarity index 65% rename from src/main/java/meteordevelopment/meteorclient/mixin/PlayerListHudMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/PlayerTabOverlayMixin.java index 2337643251..ae4f9844f4 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerListHudMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/PlayerTabOverlayMixin.java @@ -9,13 +9,13 @@ import com.llamalad7.mixinextras.sugar.ref.LocalIntRef; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.BetterTab; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.font.TextRenderer; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.hud.PlayerListHud; -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.text.Text; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.PlayerTabOverlay; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.network.chat.Component; +import net.minecraft.util.Mth; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.*; @@ -24,20 +24,20 @@ import java.util.List; -@Mixin(PlayerListHud.class) -public abstract class PlayerListHudMixin { +@Mixin(PlayerTabOverlay.class) +public abstract class PlayerTabOverlayMixin { @Shadow - protected abstract List collectPlayerEntries(); + protected abstract List getPlayerInfos(); - @ModifyConstant(constant = @Constant(longValue = 80L), method = "collectPlayerEntries") + @ModifyConstant(constant = @Constant(longValue = 80L), method = "getPlayerInfos") private long modifyCount(long count) { BetterTab module = Modules.get().get(BetterTab.class); return module.isActive() ? module.tabSize.get() : count; } - @Inject(method = "getPlayerName", at = @At("HEAD"), cancellable = true) - public void getPlayerName(PlayerListEntry playerListEntry, CallbackInfoReturnable info) { + @Inject(method = "getNameForDisplay", at = @At("HEAD"), cancellable = true) + public void getPlayerName(PlayerInfo playerListEntry, CallbackInfoReturnable info) { BetterTab betterTab = Modules.get().get(BetterTab.class); if (betterTab.isActive()) info.setReturnValue(betterTab.getPlayerName(playerListEntry)); @@ -51,13 +51,13 @@ private int modifyWidth(int width) { } @Inject(method = "render", at = @At(value = "INVOKE", target = "Ljava/lang/Math;min(II)I", shift = At.Shift.BEFORE)) - private void modifyHeight(CallbackInfo ci, @Local(ordinal = 5)LocalIntRef o, @Local(ordinal = 6)LocalIntRef p) { + private void modifyHeight(CallbackInfo ci, @Local(ordinal = 5) LocalIntRef o, @Local(ordinal = 6) LocalIntRef p) { BetterTab module = Modules.get().get(BetterTab.class); if (!module.isActive()) return; int newO; int newP = 1; - int totalPlayers = newO = this.collectPlayerEntries().size(); + int totalPlayers = newO = this.getPlayerInfos().size(); while (newO > module.tabHeight.get()) { newO = (totalPlayers + ++newP - 1) / newP; } @@ -66,17 +66,17 @@ private void modifyHeight(CallbackInfo ci, @Local(ordinal = 5)LocalIntRef o, @Lo p.set(newP); } - @Inject(method = "renderLatencyIcon", at = @At("HEAD"), cancellable = true) - private void onRenderLatencyIcon(DrawContext context, int width, int x, int y, PlayerListEntry entry, CallbackInfo ci) { + @Inject(method = "renderPingIcon", at = @At("HEAD"), cancellable = true) + private void onRenderLatencyIcon(GuiGraphics context, int width, int x, int y, PlayerInfo entry, CallbackInfo ci) { BetterTab betterTab = Modules.get().get(BetterTab.class); if (betterTab.isActive() && betterTab.accurateLatency.get()) { - MinecraftClient mc = MinecraftClient.getInstance(); - TextRenderer textRenderer = mc.textRenderer; + Minecraft mc = Minecraft.getInstance(); + Font textRenderer = mc.textRenderer; - int latency = MathHelper.clamp(entry.getLatency(), 0, 9999); + int latency = Mth.clamp(entry.getLatency(), 0, 9999); int color = latency < 150 ? 0xFF00E970 : - latency < 300 ? 0xFFE7D020 : 0xFFD74238; + latency < 300 ? 0xFFE7D020 : 0xFFD74238; String text = latency + "ms"; context.drawTextWithShadow(textRenderer, text, x + width - textRenderer.getWidth(text), y, color); ci.cancel(); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PowderSnowBlockMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/PowderSnowBlockMixin.java index 4b879762f5..5621edefb2 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PowderSnowBlockMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/PowderSnowBlockMixin.java @@ -8,8 +8,8 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.Jesus; -import net.minecraft.block.PowderSnowBlock; -import net.minecraft.entity.Entity; +import net.minecraft.world.level.block.PowderSnowBlock; +import net.minecraft.world.entity.Entity; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -17,7 +17,7 @@ @Mixin(PowderSnowBlock.class) public abstract class PowderSnowBlockMixin { - @ModifyReturnValue(method = "canWalkOnPowderSnow", at = @At("RETURN")) + @ModifyReturnValue(method = "canEntityWalkOnPowderSnow", at = @At("RETURN")) private static boolean onCanWalkOnPowderSnow(boolean original, Entity entity) { if (entity == mc.player && Modules.get().get(Jesus.class).canWalkOnPowderSnow()) return true; return original; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ProjectileInGroundAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ProjectileInGroundAccessor.java index 43c78b1657..93d5e1accb 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ProjectileInGroundAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ProjectileInGroundAccessor.java @@ -5,11 +5,11 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.entity.projectile.PersistentProjectileEntity; +import net.minecraft.world.entity.projectile.arrow.AbstractArrow; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Invoker; -@Mixin(PersistentProjectileEntity.class) +@Mixin(AbstractArrow.class) public interface ProjectileInGroundAccessor { @Invoker("isInGround") boolean meteor$invokeIsInGround(); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ProjectileUtilMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ProjectileUtilMixin.java index 9aaef988e6..ed314cde15 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ProjectileUtilMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ProjectileUtilMixin.java @@ -9,19 +9,19 @@ import com.llamalad7.mixinextras.sugar.Local; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.combat.Hitboxes; -import net.minecraft.entity.Entity; -import net.minecraft.entity.projectile.ProjectileUtil; -import net.minecraft.util.math.Box; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.projectile.ProjectileUtil; +import net.minecraft.world.phys.AABB; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @Mixin(ProjectileUtil.class) public class ProjectileUtilMixin { @ModifyExpressionValue( - method = "collectPiercingCollisions(Lnet/minecraft/world/World;Lnet/minecraft/entity/Entity;Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/util/math/Box;Ljava/util/function/Predicate;FLnet/minecraft/world/RaycastContext$ShapeType;Z)Ljava/util/Collection;", - at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getBoundingBox()Lnet/minecraft/util/math/Box;") + method = "getManyEntityHitResult(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/Entity;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/world/phys/AABB;Ljava/util/function/Predicate;FLnet/minecraft/world/level/ClipContext$Block;Z)Ljava/util/Collection;", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getBoundingBox()Lnet/minecraft/world/phys/AABB;") ) - private static Box modifyHitboxMargin(Box original, @Local(ordinal = 1) Entity entity2) { + private static AABB modifyHitboxMargin(AABB original, @Local(ordinal = 1) Entity entity2) { double v = Modules.get().get(Hitboxes.class).getEntityValue(entity2); if (v == 0) return original; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/RaycastContextMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/RaycastContextMixin.java index 8a549798bd..87f635860b 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/RaycastContextMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/RaycastContextMixin.java @@ -6,29 +6,56 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.IRaycastContext; -import net.minecraft.block.ShapeContext; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.RaycastContext; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.ClipContext; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Shadow; +// TODO(Ravel): can not resolve target class RaycastContext +// TODO(Ravel): can not resolve target class RaycastContext @Mixin(RaycastContext.class) public abstract class RaycastContextMixin implements IRaycastContext { - @Shadow @Final @Mutable private Vec3d start; - @Shadow @Final @Mutable private Vec3d end; - @Shadow @Final @Mutable private RaycastContext.ShapeType shapeType; - @Shadow @Final @Mutable private RaycastContext.FluidHandling fluid; - @Shadow @Final @Mutable private ShapeContext shapeContext; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + private Vec3 start; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + private Vec3 end; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + private RaycastContext.ShapeType shapeType; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + private RaycastContext.FluidHandling fluid; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + private CollisionContext shapeContext; @Override - public void meteor$set(Vec3d start, Vec3d end, RaycastContext.ShapeType shapeType, RaycastContext.FluidHandling fluidHandling, Entity entity) { + public void meteor$set(Vec3 start, Vec3 end, RaycastContext.ShapeType shapeType, RaycastContext.FluidHandling fluidHandling, Entity entity) { this.start = start; this.end = end; this.shapeType = shapeType; this.fluid = fluidHandling; - this.shapeContext = ShapeContext.of(entity); + this.shapeContext = CollisionContext.of(entity); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ReloadStateAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ReloadStateAccessor.java index ac006c184f..17047c5443 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ReloadStateAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ReloadStateAccessor.java @@ -5,11 +5,11 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.resource.ResourceReloadLogger; +import net.minecraft.client.ResourceLoadStateTracker; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(ResourceReloadLogger.ReloadState.class) +@Mixin(ResourceLoadStateTracker.ReloadState.class) public interface ReloadStateAccessor { @Accessor("finished") boolean meteor$isFinished(); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/RenderLayerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/RenderLayerAccessor.java deleted file mode 100644 index 0c5c065f78..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/RenderLayerAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.RenderSetup; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(RenderLayer.class) -public interface RenderLayerAccessor { - @Accessor("renderSetup") - RenderSetup getRenderSetup(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/RenderSystemMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/RenderSystemMixin.java index 2d03bac19b..b080869c7a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/RenderSystemMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/RenderSystemMixin.java @@ -6,6 +6,7 @@ package meteordevelopment.meteorclient.mixin; import com.mojang.blaze3d.systems.RenderSystem; +import meteordevelopment.meteorclient.mixin.MinecraftAccessor; import meteordevelopment.meteorclient.renderer.MeshUniforms; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.InventoryTweaks; @@ -29,6 +30,6 @@ public abstract class RenderSystemMixin { OutlineUniforms.flipFrame(); if (Modules.get() == null || mc.player == null) return; - if (Modules.get().get(InventoryTweaks.class).frameInput()) ((MinecraftClientAccessor) mc).meteor$handleInputEvents(); + if (Modules.get().get(InventoryTweaks.class).frameInput()) ((MinecraftAccessor) mc).meteor$handleInputEvents(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/RenderTickCounterDynamicMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/RenderTickCounterDynamicMixin.java index fe0facdf3e..56870c3069 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/RenderTickCounterDynamicMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/RenderTickCounterDynamicMixin.java @@ -7,7 +7,7 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.world.Timer; -import net.minecraft.client.render.RenderTickCounter; +import net.minecraft.client.DeltaTracker; import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -15,13 +15,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(RenderTickCounter.Dynamic.class) +@Mixin(DeltaTracker.Timer.class) public abstract class RenderTickCounterDynamicMixin { @Shadow - private float dynamicDeltaTicks; + private float deltaTicks; - @Inject(method = "beginRenderTick(J)I", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/RenderTickCounter$Dynamic;lastTimeMillis:J", opcode = Opcodes.PUTFIELD)) + @Inject(method = "advanceGameTime(J)I", at = @At(value = "FIELD", target = "Lnet/minecraft/client/DeltaTracker$Timer;lastMs:J", opcode = Opcodes.PUTFIELD)) private void onBeingRenderTick(long a, CallbackInfoReturnable info) { - dynamicDeltaTicks *= (float) Modules.get().get(Timer.class).getMultiplier(); + deltaTicks *= (float) Modules.get().get(Timer.class).getMultiplier(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/EntityBucketItemAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/RenderTypeAccessor.java similarity index 55% rename from src/main/java/meteordevelopment/meteorclient/mixin/EntityBucketItemAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/RenderTypeAccessor.java index 3b7dc0c93f..6af66443c5 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/EntityBucketItemAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/RenderTypeAccessor.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.entity.EntityType; -import net.minecraft.item.EntityBucketItem; +import net.minecraft.client.renderer.rendertype.RenderType; +import net.minecraft.client.renderer.rendertype.RenderSetup; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(EntityBucketItem.class) -public interface EntityBucketItemAccessor { - @Accessor("entityType") - EntityType meteor$getEntityType(); +@Mixin(RenderType.class) +public interface RenderTypeAccessor { + @Accessor("state") + RenderSetup getState(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ResourceReloadLoggerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ResourceLoadStateTrackerAccessor.java similarity index 60% rename from src/main/java/meteordevelopment/meteorclient/mixin/ResourceReloadLoggerAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ResourceLoadStateTrackerAccessor.java index d3a8936845..e3f7c0bc5a 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ResourceReloadLoggerAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ResourceLoadStateTrackerAccessor.java @@ -5,12 +5,12 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.resource.ResourceReloadLogger; +import net.minecraft.client.ResourceLoadStateTracker; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(ResourceReloadLogger.class) -public interface ResourceReloadLoggerAccessor { +@Mixin(ResourceLoadStateTracker.class) +public interface ResourceLoadStateTrackerAccessor { @Accessor("reloadState") - ResourceReloadLogger.ReloadState meteor$getReloadState(); + ResourceLoadStateTracker.ReloadState meteor$getReloadState(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ScreenEffectRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ScreenEffectRendererMixin.java new file mode 100644 index 0000000000..b1b304440e --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ScreenEffectRendererMixin.java @@ -0,0 +1,36 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import meteordevelopment.meteorclient.systems.modules.Modules; +import meteordevelopment.meteorclient.systems.modules.render.NoRender; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ScreenEffectRenderer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import com.mojang.blaze3d.vertex.PoseStack; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ScreenEffectRenderer.class) +public abstract class ScreenEffectRendererMixin { + @Inject(method = "renderFire", at = @At("HEAD"), cancellable = true) + private static void onRenderFireOverlay(PoseStack matrices, MultiBufferSource vertexConsumers, TextureAtlasSprite sprite, CallbackInfo ci) { + if (Modules.get().get(NoRender.class).noFireOverlay()) ci.cancel(); + } + + @Inject(method = "renderWater", at = @At("HEAD"), cancellable = true) + private static void onRenderUnderwaterOverlay(Minecraft client, PoseStack matrices, MultiBufferSource vertexConsumers, CallbackInfo ci) { + if (Modules.get().get(NoRender.class).noLiquidOverlay()) ci.cancel(); + } + + @Inject(method = "renderTex", at = @At("HEAD"), cancellable = true) + private static void render(TextureAtlasSprite sprite, PoseStack matrices, MultiBufferSource vertexConsumers, CallbackInfo ci) { + if (Modules.get().get(NoRender.class).noInWallOverlay()) ci.cancel(); + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ScreenMixin.java index c11686f611..0d08e4275d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ScreenMixin.java @@ -15,11 +15,11 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.text.MeteorClickEvent; import meteordevelopment.meteorclient.utils.misc.text.RunnableClickEvent; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.screen.ChatScreen; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.input.KeyInput; -import net.minecraft.text.ClickEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.ChatScreen; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.network.chat.ClickEvent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -30,7 +30,7 @@ import static net.minecraft.client.util.InputUtil.*; -@Mixin(value = Screen.class, priority = 500) // needs to be before baritone +@Mixin(value = ChatScreen.class, priority = 500) // needs to be before baritone public abstract class ScreenMixin { @Inject(method = "renderInGameBackground", at = @At("HEAD"), cancellable = true) private void onRenderInGameBackground(CallbackInfo info) { @@ -39,12 +39,11 @@ private void onRenderInGameBackground(CallbackInfo info) { } @Inject(method = "handleBasicClickEvent", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;)V", remap = false), cancellable = true) - private static void onHandleBasicClickEvent(ClickEvent clickEvent, MinecraftClient client, Screen screen, CallbackInfo ci) { + private static void onHandleBasicClickEvent(ClickEvent clickEvent, Minecraft client, ChatScreen screen, CallbackInfo ci) { if (clickEvent instanceof RunnableClickEvent runnableClickEvent) { runnableClickEvent.runnable.run(); ci.cancel(); - } - else if (clickEvent instanceof MeteorClickEvent meteorClickEvent && meteorClickEvent.value.startsWith(Config.get().prefix.get())) { + } else if (clickEvent instanceof MeteorClickEvent meteorClickEvent && meteorClickEvent.value.startsWith(Config.get().prefix.get())) { try { Commands.dispatch(meteorClickEvent.value.substring(Config.get().prefix.get().length())); } catch (CommandSyntaxException e) { @@ -56,10 +55,10 @@ else if (clickEvent instanceof MeteorClickEvent meteorClickEvent && meteorClickE } @Inject(method = "keyPressed", at = @At("HEAD"), cancellable = true) - private void onKeyPressed(KeyInput input, CallbackInfoReturnable cir) { + private void onKeyPressed(KeyEvent input, CallbackInfoReturnable cir) { if ((Object) (this) instanceof ChatScreen) return; GUIMove guiMove = Modules.get().get(GUIMove.class); - List arrows = List.of(GLFW_KEY_RIGHT, GLFW_KEY_LEFT, GLFW_KEY_DOWN, GLFW_KEY_UP); + List arrows = List.of(GLFW_KEY_RIGHT, GLFW_KEY_LEFT, GLFW_KEY_DOWN, GLFW_KEY_UP); if ((guiMove.disableArrows() && arrows.contains(input.key())) || (guiMove.disableSpace() && input.key() == GLFW_KEY_SPACE)) { cir.setReturnValue(true); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SectionedEntityCacheAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/SectionedEntityCacheAccessor.java deleted file mode 100644 index 6b699102cb..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SectionedEntityCacheAccessor.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import it.unimi.dsi.fastutil.longs.Long2ObjectMap; -import it.unimi.dsi.fastutil.longs.LongSortedSet; -import net.minecraft.world.entity.EntityLike; -import net.minecraft.world.entity.EntityTrackingSection; -import net.minecraft.world.entity.SectionedEntityCache; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(SectionedEntityCache.class) -public interface SectionedEntityCacheAccessor { - @Accessor("trackedPositions") - LongSortedSet meteor$getTrackedPositions(); - - @Accessor("trackingSections") - Long2ObjectMap> meteor$getTrackingSections(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ServerPlayerEntityMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ServerPlayerMixin.java similarity index 73% rename from src/main/java/meteordevelopment/meteorclient/mixin/ServerPlayerEntityMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ServerPlayerMixin.java index be0bf950b3..b5c260e4a8 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ServerPlayerEntityMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ServerPlayerMixin.java @@ -8,18 +8,18 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.Anchor; import meteordevelopment.meteorclient.systems.modules.movement.Scaffold; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.world.World; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ServerPlayerEntity.class) -public abstract class ServerPlayerEntityMixin extends LivingEntity { - protected ServerPlayerEntityMixin(EntityType entityType, World world) { +@Mixin(ServerPlayer.class) +public abstract class ServerPlayerMixin extends LivingEntity { + protected ServerPlayerMixin(EntityType entityType, Level world) { super(entityType, world); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerMoveC2SPacketAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ServerboundMovePlayerPacketAccessor.java similarity index 74% rename from src/main/java/meteordevelopment/meteorclient/mixin/PlayerMoveC2SPacketAccessor.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ServerboundMovePlayerPacketAccessor.java index afcce5e406..696f001bf4 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/PlayerMoveC2SPacketAccessor.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ServerboundMovePlayerPacketAccessor.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; +import net.minecraft.network.protocol.game.ServerboundMovePlayerPacket; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.gen.Accessor; -@Mixin(PlayerMoveC2SPacket.class) -public interface PlayerMoveC2SPacketAccessor { +@Mixin(ServerboundMovePlayerPacket.class) +public interface ServerboundMovePlayerPacketAccessor { @Mutable @Accessor("y") void meteor$setY(double y); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ShaderLoaderMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ShaderManagerMixin.java similarity index 64% rename from src/main/java/meteordevelopment/meteorclient/mixin/ShaderLoaderMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ShaderManagerMixin.java index a04a6d280c..2d60de558f 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ShaderLoaderMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ShaderManagerMixin.java @@ -6,15 +6,15 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.renderer.MeteorRenderPipelines; -import net.minecraft.client.gl.ShaderLoader; +import net.minecraft.client.renderer.ShaderManager; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ShaderLoader.class) -public abstract class ShaderLoaderMixin { - @Inject(method = "apply(Lnet/minecraft/client/gl/ShaderLoader$Definitions;Lnet/minecraft/resource/ResourceManager;Lnet/minecraft/util/profiler/Profiler;)V", at = @At("TAIL")) +@Mixin(ShaderManager.class) +public abstract class ShaderManagerMixin { + @Inject(method = "apply(Lnet/minecraft/client/renderer/ShaderManager$Configs;Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)V", at = @At("TAIL")) private void meteor$reloadPipelines(CallbackInfo info) { MeteorRenderPipelines.precompile(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ShadowPiecesCommandRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/ShadowFeatureRendererMixin.java similarity index 57% rename from src/main/java/meteordevelopment/meteorclient/mixin/ShadowPiecesCommandRendererMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/ShadowFeatureRendererMixin.java index 05fb3826e2..1a3a9bc7aa 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ShadowPiecesCommandRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ShadowFeatureRendererMixin.java @@ -5,18 +5,18 @@ package meteordevelopment.meteorclient.mixin; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.render.command.BatchingRenderCommandQueue; -import net.minecraft.client.render.command.ShadowPiecesCommandRenderer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.SubmitNodeCollection; +import net.minecraft.client.renderer.feature.ShadowFeatureRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ShadowPiecesCommandRenderer.class) -public abstract class ShadowPiecesCommandRendererMixin { +@Mixin(ShadowFeatureRenderer.class) +public abstract class ShadowFeatureRendererMixin { @Inject(method = "render", at = @At("HEAD"), cancellable = true) - private void meteor$onRender(BatchingRenderCommandQueue queue, VertexConsumerProvider.Immediate vertexConsumers, CallbackInfo info) { + private void meteor$onRender(SubmitNodeCollection queue, MultiBufferSource.BufferSource vertexConsumers, CallbackInfo info) { if (queue.getShadowPiecesCommands().isEmpty()) { info.cancel(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ShulkerBoxMenuAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ShulkerBoxMenuAccessor.java new file mode 100644 index 0000000000..1194bf58b2 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/ShulkerBoxMenuAccessor.java @@ -0,0 +1,17 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.world.Container; +import net.minecraft.world.inventory.ShulkerBoxMenu; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ShulkerBoxMenu.class) +public interface ShulkerBoxMenuAccessor { + @Accessor("container") + Container meteor$getContainer(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ShulkerBoxScreenHandlerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/ShulkerBoxScreenHandlerAccessor.java deleted file mode 100644 index 2b6975f82b..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ShulkerBoxScreenHandlerAccessor.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.inventory.Inventory; -import net.minecraft.screen.ShulkerBoxScreenHandler; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ShulkerBoxScreenHandler.class) -public interface ShulkerBoxScreenHandlerAccessor { - @Accessor("inventory") - Inventory meteor$getInventory(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SimpleEntityLookupAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/SimpleEntityLookupAccessor.java deleted file mode 100644 index d8d440f2e0..0000000000 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SimpleEntityLookupAccessor.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). - * Copyright (c) Meteor Development. - */ - -package meteordevelopment.meteorclient.mixin; - -import net.minecraft.world.entity.EntityLike; -import net.minecraft.world.entity.SectionedEntityCache; -import net.minecraft.world.entity.SimpleEntityLookup; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(SimpleEntityLookup.class) -public interface SimpleEntityLookupAccessor { - @Accessor("cache") - SectionedEntityCache meteor$getCache(); -} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SimpleOptionMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/SimpleOptionMixin.java index 0b841a1026..8ad74e94a8 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SimpleOptionMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/SimpleOptionMixin.java @@ -6,8 +6,8 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.ISimpleOption; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.option.SimpleOption; +import net.minecraft.client.Minecraft; +import net.minecraft.client.OptionInstance; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -15,14 +15,23 @@ import java.util.Objects; import java.util.function.Consumer; +// TODO(Ravel): can not resolve target class SimpleOption +// TODO(Ravel): can not resolve target class SimpleOption @Mixin(SimpleOption.class) public abstract class SimpleOptionMixin implements ISimpleOption { - @Shadow Object value; - @Shadow @Final private Consumer changeCallback; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + Object value; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + private Consumer changeCallback; @Override public void meteor$set(Object value) { - if (!MinecraftClient.getInstance().isRunning()) { + if (!Minecraft.getInstance().isRunning()) { this.value = value; } else { if (!Objects.equals(this.value, value)) { diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SkinManagerAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/SkinManagerAccessor.java new file mode 100644 index 0000000000..9e760c1bca --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/SkinManagerAccessor.java @@ -0,0 +1,16 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.client.resources.SkinManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(SkinManager.class) +public interface SkinManagerAccessor { + @Accessor("skinTextures") + SkinManager.TextureCache meteor$getSkinTextures(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SkyRenderingMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/SkyRendererMixin.java similarity index 63% rename from src/main/java/meteordevelopment/meteorclient/mixin/SkyRenderingMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/SkyRendererMixin.java index 1bc454569b..916f7cbd3e 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SkyRenderingMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/SkyRendererMixin.java @@ -7,11 +7,11 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.world.Ambience; -import net.minecraft.client.render.Camera; -import net.minecraft.client.render.SkyRendering; -import net.minecraft.client.render.state.SkyRenderState; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.world.dimension.DimensionType; +import net.minecraft.client.Camera; +import net.minecraft.client.renderer.SkyRenderer; +import net.minecraft.client.renderer.state.SkyRenderState; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.level.dimension.DimensionType; import org.joml.Vector4fc; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -19,10 +19,10 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(SkyRendering.class) -public class SkyRenderingMixin { - @Inject(method = "updateRenderState", at = @At("TAIL")) - private void updateRenderState(ClientWorld world, float tickProgress, Camera camera, SkyRenderState state, CallbackInfo ci) { +@Mixin(SkyRenderer.class) +public class SkyRendererMixin { + @Inject(method = "extractRenderState", at = @At("TAIL")) + private void updateRenderState(ClientLevel world, float tickProgress, Camera camera, SkyRenderState state, CallbackInfo ci) { Ambience ambience = Modules.get().get(Ambience.class); if (!ambience.isActive()) return; @@ -30,11 +30,12 @@ private void updateRenderState(ClientWorld world, float tickProgress, Camera cam if (ambience.customSkyColor.get()) state.skyColor = ambience.skyColor().getPacked(); } - @ModifyArg(method = "renderEndSky", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gl/DynamicUniforms;write(Lorg/joml/Matrix4fc;Lorg/joml/Vector4fc;Lorg/joml/Vector3fc;Lorg/joml/Matrix4fc;)Lcom/mojang/blaze3d/buffers/GpuBufferSlice;")) + @ModifyArg(method = "renderEndSky", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/DynamicUniforms;writeTransform(Lorg/joml/Matrix4fc;Lorg/joml/Vector4fc;Lorg/joml/Vector3fc;Lorg/joml/Matrix4fc;)Lcom/mojang/blaze3d/buffers/GpuBufferSlice;")) private Vector4fc modifyEndSkyColor(Vector4fc original) { Ambience ambience = Modules.get().get(Ambience.class); - if (ambience.isActive() && ambience.endSky.get() && ambience.customSkyColor.get()) return ambience.skyColor().getVec4f(); + if (ambience.isActive() && ambience.endSky.get() && ambience.customSkyColor.get()) + return ambience.skyColor().getVec4f(); else return original; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SlimeBlockMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/SlimeBlockMixin.java index 6bbadb9476..65b68537c7 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SlimeBlockMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/SlimeBlockMixin.java @@ -7,11 +7,11 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.NoSlow; -import net.minecraft.block.BlockState; -import net.minecraft.block.SlimeBlock; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.SlimeBlock; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -22,7 +22,7 @@ @Mixin(SlimeBlock.class) public abstract class SlimeBlockMixin { @Inject(method = "onSteppedOn", at = @At("HEAD"), cancellable = true) - private void onSteppedOn(World world, BlockPos pos, BlockState state, Entity entity, CallbackInfo info) { + private void onSteppedOn(Level world, BlockPos pos, BlockState state, Entity entity, CallbackInfo info) { if (Modules.get().get(NoSlow.class).slimeBlock() && entity == mc.player) info.cancel(); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SlotMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/SlotMixin.java index 7289bf0fbf..179848b124 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SlotMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/SlotMixin.java @@ -6,15 +6,24 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.ISlot; -import net.minecraft.screen.slot.Slot; +import net.minecraft.world.inventory.Slot; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +// TODO(Ravel): can not resolve target class net.minecraft.world.inventory.Slot +// TODO(Ravel): can not resolve target class Slot @Mixin(Slot.class) public abstract class SlotMixin implements ISlot { - @Shadow public int id; - @Shadow @Final private int index; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + public int id; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + private int index; @Override public int meteor$getId() { diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SoundSystemMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/SoundEngineMixin.java similarity index 68% rename from src/main/java/meteordevelopment/meteorclient/mixin/SoundSystemMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/SoundEngineMixin.java index 9f5ea249d0..dcb56e646d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SoundSystemMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/SoundEngineMixin.java @@ -10,9 +10,9 @@ import meteordevelopment.meteorclient.events.world.PlaySoundEvent; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.SoundBlocker; -import net.minecraft.client.sound.SoundInstance; -import net.minecraft.client.sound.SoundSystem; -import net.minecraft.client.sound.TickableSoundInstance; +import net.minecraft.client.resources.sounds.SoundInstance; +import net.minecraft.client.sounds.SoundEngine; +import net.minecraft.client.resources.sounds.TickableSoundInstance; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -20,19 +20,19 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(SoundSystem.class) -public abstract class SoundSystemMixin { +@Mixin(SoundEngine.class) +public abstract class SoundEngineMixin { @Shadow public abstract void stop(SoundInstance sound); - @Inject(method = "play(Lnet/minecraft/client/sound/SoundInstance;)Lnet/minecraft/client/sound/SoundSystem$PlayResult;", at = @At("HEAD"), cancellable = true) - private void onPlay(SoundInstance soundInstance, CallbackInfoReturnable cir) { + @Inject(method = "play(Lnet/minecraft/client/resources/sounds/SoundInstance;)Lnet/minecraft/client/sounds/SoundEngine$PlayResult;", at = @At("HEAD"), cancellable = true) + private void onPlay(SoundInstance soundInstance, CallbackInfoReturnable cir) { PlaySoundEvent event = MeteorClient.EVENT_BUS.post(PlaySoundEvent.get(soundInstance)); if (event.isCancelled()) cir.cancel(); } - @Inject(method = "tick()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/sound/TickableSoundInstance;tick()V", ordinal = 0)) + @Inject(method = "tickInGameSound()V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/sounds/TickableSoundInstance;tick()V", ordinal = 0)) private void onTick(CallbackInfo ci, @Local TickableSoundInstance tickableSoundInstance) { if (Modules.get().get(SoundBlocker.class).shouldBlock(tickableSoundInstance)) stop(tickableSoundInstance); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/MobSpawnerBlockEntityRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/SpawnerRendererMixin.java similarity index 55% rename from src/main/java/meteordevelopment/meteorclient/mixin/MobSpawnerBlockEntityRendererMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/SpawnerRendererMixin.java index ef841ae845..d9d6f45ac7 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/MobSpawnerBlockEntityRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/SpawnerRendererMixin.java @@ -7,18 +7,18 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.NoRender; -import net.minecraft.block.entity.MobSpawnerBlockEntity; -import net.minecraft.client.render.block.entity.BlockEntityRenderer; -import net.minecraft.client.render.block.entity.MobSpawnerBlockEntityRenderer; -import net.minecraft.client.render.block.entity.state.MobSpawnerBlockEntityRenderState; +import net.minecraft.world.level.block.entity.SpawnerBlockEntity; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; +import net.minecraft.client.renderer.blockentity.SpawnerRenderer; +import net.minecraft.client.renderer.blockentity.state.SpawnerRenderState; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(MobSpawnerBlockEntityRenderer.class) -public abstract class MobSpawnerBlockEntityRendererMixin implements BlockEntityRenderer { - @Inject(method = "renderDisplayEntity", at = @At("HEAD"), cancellable = true) +@Mixin(SpawnerRenderer.class) +public abstract class SpawnerRendererMixin implements BlockEntityRenderer { + @Inject(method = "submitEntityInSpawner", at = @At("HEAD"), cancellable = true) private static void onRenderDisplayEntity(CallbackInfo ci) { if (Modules.get().get(NoRender.class).noMobInSpawner()) ci.cancel(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SplashTextResourceSupplierMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/SplashManagerMixin.java similarity index 55% rename from src/main/java/meteordevelopment/meteorclient/mixin/SplashTextResourceSupplierMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/SplashManagerMixin.java index ccb6ea4c11..7a795fc304 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SplashTextResourceSupplierMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/SplashManagerMixin.java @@ -6,9 +6,9 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.systems.config.Config; -import net.minecraft.client.gui.screen.SplashTextRenderer; -import net.minecraft.client.resource.SplashTextResourceSupplier; -import net.minecraft.text.Text; +import net.minecraft.client.gui.components.SplashRenderer; +import net.minecraft.client.resources.SplashManager; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -18,8 +18,8 @@ import java.util.List; import java.util.Random; -@Mixin(SplashTextResourceSupplier.class) -public abstract class SplashTextResourceSupplierMixin { +@Mixin(SplashManager.class) +public abstract class SplashManagerMixin { @Unique private boolean override = true; @Unique @@ -27,24 +27,25 @@ public abstract class SplashTextResourceSupplierMixin { @Unique private final List meteorSplashes = getMeteorSplashes(); - @Inject(method = "get", at = @At("HEAD"), cancellable = true) - private void onApply(CallbackInfoReturnable cir) { + @Inject(method = "getSplash", at = @At("HEAD"), cancellable = true) + private void onApply(CallbackInfoReturnable cir) { if (Config.get() == null || !Config.get().titleScreenSplashes.get()) return; - if (override) cir.setReturnValue(new SplashTextRenderer(Text.literal(meteorSplashes.get(random.nextInt(meteorSplashes.size()))))); + if (override) + cir.setReturnValue(new SplashTextRenderer(Component.literal(meteorSplashes.get(random.nextInt(meteorSplashes.size()))))); override = !override; } @Unique private static List getMeteorSplashes() { return List.of( - "Meteor on Crack!", - "Star Meteor Client on GitHub!", - "Based utility mod.", - "§6MineGame159 §fbased god", - "§4meteorclient.com", - "§4Meteor on Crack!", - "§6Meteor on Crack!" + "Meteor on Crack!", + "Star Meteor Client on GitHub!", + "Based utility mod.", + "§6MineGame159 §fbased god", + "§4meteorclient.com", + "§4Meteor on Crack!", + "§6Meteor on Crack!" ); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TextVisitFactoryMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/StringDecomposerMixin.java similarity index 58% rename from src/main/java/meteordevelopment/meteorclient/mixin/TextVisitFactoryMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/StringDecomposerMixin.java index d0dd876a27..a5ff1588cf 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/TextVisitFactoryMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/StringDecomposerMixin.java @@ -7,19 +7,19 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.player.NameProtect; -import net.minecraft.text.TextVisitFactory; +import net.minecraft.util.StringDecomposer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; -@Mixin(TextVisitFactory.class) -public abstract class TextVisitFactoryMixin { +@Mixin(StringDecomposer.class) +public abstract class StringDecomposerMixin { @ModifyArg(at = @At(value = "INVOKE", - target = "Lnet/minecraft/text/TextVisitFactory;visitFormatted(Ljava/lang/String;ILnet/minecraft/text/Style;Lnet/minecraft/text/Style;Lnet/minecraft/text/CharacterVisitor;)Z", - ordinal = 0), - method = { - "visitFormatted(Ljava/lang/String;ILnet/minecraft/text/Style;Lnet/minecraft/text/CharacterVisitor;)Z"}, - index = 0) + target = "Lnet/minecraft/util/StringDecomposer;iterateFormatted(Ljava/lang/String;ILnet/minecraft/network/chat/Style;Lnet/minecraft/network/chat/Style;Lnet/minecraft/util/FormattedCharSink;)Z", + ordinal = 0), + method = { + "iterateFormatted(Ljava/lang/String;ILnet/minecraft/network/chat/Style;Lnet/minecraft/util/FormattedCharSink;)Z"}, + index = 0) private static String adjustText(String text) { if (Modules.get() != null) return Modules.get().get(NameProtect.class).replaceName(text); else return text; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/StringSplitterAccessor.java b/src/main/java/meteordevelopment/meteorclient/mixin/StringSplitterAccessor.java new file mode 100644 index 0000000000..7e4e9a1e27 --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/StringSplitterAccessor.java @@ -0,0 +1,16 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import net.minecraft.client.StringSplitter; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StringSplitter.class) +public interface StringSplitterAccessor { + @Accessor("widthProvider") + StringSplitter.WidthProvider meteor$getWidthProvider(); +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/StringHelperMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/StringUtilMixin.java similarity index 71% rename from src/main/java/meteordevelopment/meteorclient/mixin/StringHelperMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/StringUtilMixin.java index 4d525d5c0c..f4c8b0df89 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/StringHelperMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/StringUtilMixin.java @@ -7,14 +7,14 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.misc.BetterChat; -import net.minecraft.util.StringHelper; +import net.minecraft.util.StringUtil; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; -@Mixin(StringHelper.class) -public abstract class StringHelperMixin { - @ModifyArg(method = "truncateChat", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/StringHelper;truncate(Ljava/lang/String;IZ)Ljava/lang/String;"), index = 1) +@Mixin(StringUtil.class) +public abstract class StringUtilMixin { + @ModifyArg(method = "trimChatMessage", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/StringUtil;truncateStringIfNecessary(Ljava/lang/String;IZ)Ljava/lang/String;"), index = 1) private static int injected(int maxLength) { // this method is only used in one place, to truncate chat messages, so it's fine to do this return (Modules.get().get(BetterChat.class).isInfiniteChatBox() ? Integer.MAX_VALUE : maxLength); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/SweetBerryBushBlockMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/SweetBerryBushBlockMixin.java index 13afbd9413..7b87051bf1 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/SweetBerryBushBlockMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/SweetBerryBushBlockMixin.java @@ -8,8 +8,8 @@ import com.llamalad7.mixinextras.sugar.Local; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.NoSlow; -import net.minecraft.block.SweetBerryBushBlock; -import net.minecraft.entity.Entity; +import net.minecraft.world.level.block.SweetBerryBushBlock; +import net.minecraft.world.entity.Entity; import org.spongepowered.asm.mixin.Dynamic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -20,6 +20,8 @@ @Mixin(SweetBerryBushBlock.class) public abstract class SweetBerryBushBlockMixin { + // TODO(Ravel): target method method_9548 with the signature not found +// TODO(Ravel): target method onEntityCollision with the signature not found @Dynamic("Explicit 1.21.9 Support") @Inject(method = { "onEntityCollision", // 1.21.10 diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TextMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/TextMixin.java index 26403c1ecb..511af513a6 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/TextMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/TextMixin.java @@ -6,11 +6,14 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.IText; -import net.minecraft.text.Text; +import net.minecraft.network.chat.Component; import org.spongepowered.asm.mixin.Mixin; +// TODO(Ravel): can not resolve target class Text +// TODO(Ravel): can not resolve target class Text @Mixin(Text.class) public interface TextMixin extends IText { @Override - default void meteor$invalidateCache() {} + default void meteor$invalidateCache() { + } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TitleScreenMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/TitleScreenMixin.java index eabc7b3268..4ec42cee65 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/TitleScreenMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/TitleScreenMixin.java @@ -7,11 +7,11 @@ import meteordevelopment.meteorclient.systems.config.Config; import meteordevelopment.meteorclient.utils.player.TitleScreenCredits; -import net.minecraft.client.gui.Click; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.TitleScreen; -import net.minecraft.text.Text; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.TitleScreen; +import net.minecraft.network.chat.Component; import org.lwjgl.glfw.GLFW; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -21,17 +21,17 @@ @Mixin(TitleScreen.class) public abstract class TitleScreenMixin extends Screen { - public TitleScreenMixin(Text title) { + public TitleScreenMixin(Component title) { super(title); } @Inject(method = "render", at = @At("TAIL")) - private void onRender(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + private void onRender(GuiGraphics context, int mouseX, int mouseY, float delta, CallbackInfo ci) { if (Config.get().titleScreenCredits.get()) TitleScreenCredits.render(context); } @Inject(method = "mouseClicked", at = @At("HEAD"), cancellable = true) - private void onMouseClicked(Click click, boolean doubled, CallbackInfoReturnable cir) { + private void onMouseClicked(MouseButtonEvent click, boolean doubled, CallbackInfoReturnable cir) { if (Config.get().titleScreenCredits.get() && click.button() == GLFW.GLFW_MOUSE_BUTTON_LEFT) { if (TitleScreenCredits.onClicked(click.x(), click.y())) cir.setReturnValue(true); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java index dc4379d0ca..0eba5ad431 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/TooltipComponentMixin.java @@ -1,3 +1,4 @@ +// TODO(Ravel): Failed to fully resolve file: null cannot be cast to non-null type com.intellij.psi.PsiClass /* * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). * Copyright (c) Meteor Development. @@ -6,17 +7,17 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.utils.tooltip.MeteorTooltipData; -import net.minecraft.client.gui.tooltip.TooltipComponent; -import net.minecraft.item.tooltip.TooltipData; +import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; +import net.minecraft.world.inventory.tooltip.TooltipComponent; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(TooltipComponent.class) -public interface TooltipComponentMixin { - @Inject(method = "of(Lnet/minecraft/item/tooltip/TooltipData;)Lnet/minecraft/client/gui/tooltip/TooltipComponent;", at = @At("HEAD"), cancellable = true) - private static void shortcutMeteorTooltipData(TooltipData tooltipData, CallbackInfoReturnable cir) { +@Mixin(ClientTooltipComponent.class) +public interface ClientTooltipComponentMixin { + @Inject(method = "create(Lnet/minecraft/world/inventory/tooltip/TooltipComponent;)Lnet/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipComponent;", at = @At("HEAD"), cancellable = true) + private static void shortcutMeteorTooltipData(TooltipData tooltipData, CallbackInfoReturnable cir) { if (tooltipData instanceof MeteorTooltipData) cir.setReturnValue(null); } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TooltipDisplayComponentMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/TooltipDisplayMixin.java similarity index 63% rename from src/main/java/meteordevelopment/meteorclient/mixin/TooltipDisplayComponentMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/TooltipDisplayMixin.java index ac674316ba..a2e51fd563 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/TooltipDisplayComponentMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/TooltipDisplayMixin.java @@ -8,18 +8,18 @@ import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.BetterTooltips; -import net.minecraft.component.type.TooltipDisplayComponent; +import net.minecraft.world.item.component.TooltipDisplay; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -@Mixin(TooltipDisplayComponent.class) -public abstract class TooltipDisplayComponentMixin { - @ModifyExpressionValue(method = "shouldDisplay", at = @At(value = "FIELD", target = "Lnet/minecraft/component/type/TooltipDisplayComponent;hideTooltip:Z")) +@Mixin(TooltipDisplay.class) +public abstract class TooltipDisplayMixin { + @ModifyExpressionValue(method = "shows", at = @At(value = "FIELD", target = "Lnet/minecraft/world/item/component/TooltipDisplay;hideTooltip:Z")) private boolean modifyHideTooltip(boolean original) { return original && !Modules.get().get(BetterTooltips.class).tooltip.get(); } - @ModifyExpressionValue(method = "shouldDisplay", at = @At(value = "INVOKE", target = "Ljava/util/SequencedSet;contains(Ljava/lang/Object;)Z")) + @ModifyExpressionValue(method = "shows", at = @At(value = "INVOKE", target = "Ljava/util/SequencedSet;contains(Ljava/lang/Object;)Z")) private boolean modifyHiddenComponents(boolean original) { return original && !Modules.get().get(BetterTooltips.class).additional.get(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/TridentItemMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/TridentItemMixin.java index 0d3e1a9e71..c690f24417 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/TridentItemMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/TridentItemMixin.java @@ -9,10 +9,10 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.TridentBoost; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.TridentItem; -import net.minecraft.world.World; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TridentItem; +import net.minecraft.world.level.Level; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -25,16 +25,16 @@ @Mixin(TridentItem.class) public abstract class TridentItemMixin { @Inject(method = "onStoppedUsing", at = @At("HEAD")) - private void onStoppedUsingHead(ItemStack stack, World world, LivingEntity user, int remainingUseTicks, CallbackInfoReturnable info) { + private void onStoppedUsingHead(ItemStack stack, Level world, LivingEntity user, int remainingUseTicks, CallbackInfoReturnable info) { if (user == mc.player) Utils.isReleasingTrident = true; } @Inject(method = "onStoppedUsing", at = @At("TAIL")) - private void onStoppedUsingTail(ItemStack stack, World world, LivingEntity user, int remainingUseTicks, CallbackInfoReturnable info) { + private void onStoppedUsingTail(ItemStack stack, Level world, LivingEntity user, int remainingUseTicks, CallbackInfoReturnable info) { if (user == mc.player) Utils.isReleasingTrident = false; } - @ModifyArgs(method = "onStoppedUsing", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;addVelocity(DDD)V")) + @ModifyArgs(method = "onStoppedUsing", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;addVelocity(DDD)V")) private void modifyVelocity(Args args) { TridentBoost tridentBoost = Modules.get().get(TridentBoost.class); @@ -43,14 +43,14 @@ private void modifyVelocity(Args args) { args.set(2, (double) args.get(2) * tridentBoost.getMultiplier()); } - @ModifyExpressionValue(method = "use", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;isTouchingWaterOrRain()Z")) + @ModifyExpressionValue(method = "use", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;isTouchingWaterOrRain()Z")) private boolean isInWaterUse(boolean original) { TridentBoost tridentBoost = Modules.get().get(TridentBoost.class); return tridentBoost.allowOutOfWater() || original; } - @ModifyExpressionValue(method = "onStoppedUsing", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;isTouchingWaterOrRain()Z")) + @ModifyExpressionValue(method = "onStoppedUsing", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;isTouchingWaterOrRain()Z")) private boolean isInWaterPostUse(boolean original) { TridentBoost tridentBoost = Modules.get().get(TridentBoost.class); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/Vec3dMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/Vec3dMixin.java index 2349e8f786..804f416b56 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/Vec3dMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/Vec3dMixin.java @@ -6,17 +6,34 @@ package meteordevelopment.meteorclient.mixin; import meteordevelopment.meteorclient.mixininterface.IVec3d; -import net.minecraft.util.math.Vec3d; +import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Shadow; +// TODO(Ravel): can not resolve target class Vec3d +// TODO(Ravel): can not resolve target class Vec3d @Mixin(Vec3d.class) public abstract class Vec3dMixin implements IVec3d { - @Shadow @Final @Mutable public double x; - @Shadow @Final @Mutable public double y; - @Shadow @Final @Mutable public double z; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + public double x; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + public double y; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target + @Shadow + @Final + @Mutable + public double z; @Override public Vec3d meteor$set(double x, double y, double z) { diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/ChunkOcclusionDataBuilderMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/VisGraphMixin.java similarity index 73% rename from src/main/java/meteordevelopment/meteorclient/mixin/ChunkOcclusionDataBuilderMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/VisGraphMixin.java index 6d53a458a9..df3a20bccb 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/ChunkOcclusionDataBuilderMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/VisGraphMixin.java @@ -7,16 +7,16 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.events.world.ChunkOcclusionEvent; -import net.minecraft.client.render.chunk.ChunkOcclusionDataBuilder; -import net.minecraft.util.math.BlockPos; +import net.minecraft.client.renderer.chunk.VisGraph; +import net.minecraft.core.BlockPos; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(ChunkOcclusionDataBuilder.class) -public abstract class ChunkOcclusionDataBuilderMixin { - @Inject(method = "markClosed", at = @At("HEAD"), cancellable = true) +@Mixin(VisGraph.class) +public abstract class VisGraphMixin { + @Inject(method = "setOpaque", at = @At("HEAD"), cancellable = true) private void onMarkClosed(BlockPos pos, CallbackInfo info) { ChunkOcclusionEvent event = MeteorClient.EVENT_BUS.post(ChunkOcclusionEvent.get()); if (event.isCancelled()) info.cancel(); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/CobwebBlockMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/WebBlockMixin.java similarity index 82% rename from src/main/java/meteordevelopment/meteorclient/mixin/CobwebBlockMixin.java rename to src/main/java/meteordevelopment/meteorclient/mixin/WebBlockMixin.java index 1c4319eaac..3d83b18c3e 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/CobwebBlockMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/WebBlockMixin.java @@ -8,8 +8,8 @@ import com.llamalad7.mixinextras.sugar.Local; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.movement.NoSlow; -import net.minecraft.block.CobwebBlock; -import net.minecraft.entity.Entity; +import net.minecraft.world.level.block.WebBlock; +import net.minecraft.world.entity.Entity; import org.spongepowered.asm.mixin.Dynamic; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -18,8 +18,10 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; -@Mixin(CobwebBlock.class) -public abstract class CobwebBlockMixin { +@Mixin(WebBlock.class) +public abstract class WebBlockMixin { + // TODO(Ravel): target method method_9548 with the signature not found +// TODO(Ravel): target method onEntityCollision with the signature not found @Dynamic("Explicit 1.21.9 Support") @Inject(method = { "onEntityCollision", // 1.21.10 diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/WingsLayerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/WingsLayerMixin.java new file mode 100644 index 0000000000..5975f7d27e --- /dev/null +++ b/src/main/java/meteordevelopment/meteorclient/mixin/WingsLayerMixin.java @@ -0,0 +1,38 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client). + * Copyright (c) Meteor Development. + */ + +package meteordevelopment.meteorclient.mixin; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import meteordevelopment.meteorclient.mixininterface.IEntityRenderState; +import meteordevelopment.meteorclient.utils.network.Capes; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.entity.layers.WingsLayer; +import net.minecraft.client.renderer.entity.layers.RenderLayer; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.renderer.entity.state.HumanoidRenderState; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.resources.Identifier; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(WingsLayer.class) +public abstract class WingsLayerMixin> extends WingsLayer { + public WingsLayerMixin(RenderLayerParent context) { + super(context); + } + + @ModifyExpressionValue(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/HumanoidRenderState;FF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/WingsLayer;getPlayerElytraTexture(Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;)Lnet/minecraft/resources/Identifier;")) + private Identifier modifyCapeTexture(Identifier original, PoseStack matrices, SubmitNodeCollector entityRenderCommandQueue, int i, S state, float f, float g) { + if (((IEntityRenderState) state).meteor$getEntity() instanceof Player player) { + Identifier id = Capes.get(player); + return id == null ? original : id; + } + + return original; + } +} diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/WorldBorderMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/WorldBorderMixin.java index e92c975fcd..0c176ae594 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/WorldBorderMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/WorldBorderMixin.java @@ -7,7 +7,7 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.world.Collisions; -import net.minecraft.world.border.WorldBorder; +import net.minecraft.world.level.border.WorldBorder; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -15,12 +15,12 @@ @Mixin(WorldBorder.class) public abstract class WorldBorderMixin { - @Inject(method = "canCollide", at = @At("HEAD"), cancellable = true) + @Inject(method = "isInsideCloseToBorder", at = @At("HEAD"), cancellable = true) private void canCollide(CallbackInfoReturnable info) { if (Modules.get().get(Collisions.class).ignoreBorder()) info.setReturnValue(false); } - @Inject(method = "contains(Lnet/minecraft/util/math/BlockPos;)Z", at = @At("HEAD"), cancellable = true) + @Inject(method = "isWithinBounds(Lnet/minecraft/core/BlockPos;)Z", at = @At("HEAD"), cancellable = true) private void contains(CallbackInfoReturnable info) { if (Modules.get().get(Collisions.class).ignoreBorder()) info.setReturnValue(true); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererMixin.java index a520989d80..4ea014b42e 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/WorldRendererMixin.java @@ -25,21 +25,21 @@ import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.postprocess.EntityShader; import meteordevelopment.meteorclient.utils.render.postprocess.PostProcessShaders; -import net.minecraft.client.gl.Framebuffer; +import com.mojang.blaze3d.pipeline.RenderTarget; import net.minecraft.client.render.*; -import net.minecraft.client.render.command.OrderedRenderCommandQueue; -import net.minecraft.client.render.command.RenderDispatcher; -import net.minecraft.client.render.entity.EntityRenderManager; -import net.minecraft.client.render.state.OutlineRenderState; -import net.minecraft.client.render.state.WeatherRenderState; -import net.minecraft.client.render.state.WorldBorderRenderState; -import net.minecraft.client.render.state.WorldRenderState; -import net.minecraft.client.util.Handle; -import net.minecraft.client.util.ObjectAllocator; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.Vec3d; +import net.minecraft.client.renderer.SubmitNodeCollector; +import net.minecraft.client.renderer.feature.FeatureRenderDispatcher; +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.client.renderer.state.BlockOutlineRenderState; +import net.minecraft.client.renderer.state.WeatherRenderState; +import net.minecraft.client.renderer.state.WorldBorderRenderState; +import net.minecraft.client.renderer.state.LevelRenderState; +import com.mojang.blaze3d.resource.ResourceHandle; +import com.mojang.blaze3d.resource.GraphicsResourceAllocator; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; import org.joml.Matrix4f; import org.joml.Vector4f; import org.spongepowered.asm.mixin.Final; @@ -56,55 +56,75 @@ import static meteordevelopment.meteorclient.MeteorClient.mc; +// TODO(Ravel): can not resolve target class WorldRenderer +// TODO(Ravel): can not resolve target class WorldRenderer @Mixin(WorldRenderer.class) public abstract class WorldRendererMixin implements IWorldRenderer { - @Unique private NoRender noRender; - @Unique private ESP esp; + @Unique + private NoRender noRender; + @Unique + private ESP esp; - // if a world exists, meteor is initialised + // TODO(Ravel): no target class +// TODO(Ravel): no target class +// if a world exists, meteor is initialised @Inject(method = "setWorld", at = @At("TAIL")) - private void onSetWorld(ClientWorld world, CallbackInfo ci) { + private void onSetWorld(ClientLevel world, CallbackInfo ci) { esp = Modules.get().get(ESP.class); noRender = Modules.get().get(NoRender.class); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "checkEmpty", at = @At("HEAD"), cancellable = true) - private void onCheckEmpty(MatrixStack matrixStack, CallbackInfo info) { + private void onCheckEmpty(PoseStack matrixStack, CallbackInfo info) { info.cancel(); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "drawBlockOutline", at = @At("HEAD"), cancellable = true) - private void onDrawHighlightedBlockOutline(MatrixStack matrices, VertexConsumer vertexConsumer, double x, double y, double z, OutlineRenderState state, int i, float f, CallbackInfo ci) { + private void onDrawHighlightedBlockOutline(PoseStack matrices, VertexConsumer vertexConsumer, double x, double y, double z, BlockOutlineRenderState state, int i, float f, CallbackInfo ci) { if (Modules.get().isActive(BlockSelection.class)) ci.cancel(); } - @ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;updateCamera(Lnet/minecraft/client/render/Camera;Lnet/minecraft/client/render/Frustum;Z)V"), index = 2) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;cullTerrain(Lnet/minecraft/client/Camera;Lnet/minecraft/client/renderer/culling/Frustum;Z)V"), index = 2) private boolean renderSetupTerrainModifyArg(boolean spectator) { return Modules.get().isActive(Freecam.class) || spectator; } // No Render - @WrapWithCondition(method = "method_62216", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WeatherRendering;renderPrecipitation(Lnet/minecraft/client/render/VertexConsumerProvider;Lnet/minecraft/util/math/Vec3d;Lnet/minecraft/client/render/state/WeatherRenderState;)V")) - private boolean shouldRenderPrecipitation(WeatherRendering instance, VertexConsumerProvider vertexConsumers, Vec3d pos, WeatherRenderState weatherRenderState) { + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @WrapWithCondition(method = "method_62216", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WeatherEffectRenderer;render(Lnet/minecraft/client/renderer/MultiBufferSource;Lnet/minecraft/world/phys/Vec3;Lnet/minecraft/client/renderer/state/WeatherRenderState;)V")) + private boolean shouldRenderPrecipitation(WeatherRendering instance, VertexConsumerProvider vertexConsumers, Vec3 pos, WeatherRenderState weatherRenderState) { return !noRender.noWeather(); } - @WrapWithCondition(method = "method_62216", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/WorldBorderRendering;render(Lnet/minecraft/client/render/state/WorldBorderRenderState;Lnet/minecraft/util/math/Vec3d;DD)V")) - private boolean shouldRenderWorldBorder(WorldBorderRendering instance, WorldBorderRenderState state, Vec3d cameraPos, double viewDistanceBlocks, double farPlaneDistance) { + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @WrapWithCondition(method = "method_62216", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldBorderRenderer;render(Lnet/minecraft/client/renderer/state/WorldBorderRenderState;Lnet/minecraft/world/phys/Vec3;DD)V")) + private boolean shouldRenderWorldBorder(WorldBorderRendering instance, WorldBorderRenderState state, Vec3 cameraPos, double viewDistanceBlocks, double farPlaneDistance) { return !noRender.noWorldBorder(); } - @Inject(method = "hasBlindnessOrDarkness(Lnet/minecraft/client/render/Camera;)Z", at = @At("HEAD"), cancellable = true) - private void hasBlindnessOrDarkness(Camera camera, CallbackInfoReturnable info) { - if (noRender.noBlindness() || noRender.noDarkness()) info.setReturnValue(null); - } + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Inject(method = "hasBlindnessOrDarkness(Lnet/minecraft/client/render/Camera;)Z", at = @At("HEAD"), cancellable = true) + private void hasBlindnessOrDarkness(Camera camera, CallbackInfoReturnable info) { + if (noRender.noBlindness() || noRender.noDarkness()) info.setReturnValue(null); + } // Entity Shaders + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "render", at = @At("HEAD")) - private void onRenderHead(ObjectAllocator allocator, + private void onRenderHead(GraphicsResourceAllocator allocator, RenderTickCounter tickCounter, boolean renderBlockOutline, Camera camera, @@ -125,10 +145,12 @@ private void onRenderHead(ObjectAllocator allocator, private VertexConsumerProvider provider; @Unique - private RenderDispatcher renderDispatcher; + private FeatureRenderDispatcher renderDispatcher; + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "pushEntityRenders", at = @At("TAIL")) - private void onPushEntityRenders(MatrixStack matrices, WorldRenderState worldState, OrderedRenderCommandQueue queue, CallbackInfo info) { + private void onPushEntityRenders(PoseStack matrices, LevelRenderState worldState, SubmitNodeCollector queue, CallbackInfo info) { if (renderDispatcher == null) { renderDispatcher = new RenderDispatcher( outlineRenderCommandQueue, @@ -146,7 +168,7 @@ private void onPushEntityRenders(MatrixStack matrices, WorldRenderState worldSta } @Unique - private void draw(WorldRenderState worldState, MatrixStack matrices, EntityShader shader, Function colorGetter) { + private void draw(LevelRenderState worldState, PoseStack matrices, EntityShader shader, Function colorGetter) { var camera = worldState.cameraRenderState.pos; var empty = true; @@ -184,23 +206,31 @@ private void draw(WorldRenderState worldState, MatrixStack matrices, EntityShade meteor$popEntityOutlineFramebuffer(); } - @ModifyExpressionValue(method = "fillEntityRenderStates", at = @At(value= "INVOKE", target = "Lnet/minecraft/client/render/WorldRenderer;isRenderingReady(Lnet/minecraft/util/math/BlockPos;)Z")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyExpressionValue(method = "fillEntityRenderStates", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;isSectionCompiledAndVisible(Lnet/minecraft/core/BlockPos;)Z")) boolean fillEntityRenderStatesIsRenderingReady(boolean original) { if (esp.forceRender()) return true; return original; } - @Inject(method = "method_62214", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/OutlineVertexConsumerProvider;draw()V")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @Inject(method = "method_62214", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/OutlineBufferSource;endOutlineBatch()V")) private void onRender(CallbackInfo ci) { PostProcessShaders.submitEntityVertices(); } + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "onResized", at = @At("HEAD")) private void onResized(int width, int height, CallbackInfo info) { PostProcessShaders.onResized(width, height); } - @ModifyArg(method = "method_62205", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/CloudRenderer;renderClouds(ILnet/minecraft/client/option/CloudRenderMode;FLnet/minecraft/util/math/Vec3d;JF)V")) + // TODO(Ravel): no target class +// TODO(Ravel): no target class + @ModifyArg(method = "method_62205", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/CloudRenderer;render(ILnet/minecraft/client/CloudStatus;FLnet/minecraft/world/phys/Vec3;JF)V")) private int modifyColor(int original) { Ambience ambience = Modules.get().get(Ambience.class); if (ambience.isActive() && ambience.customCloudColor.get()) { @@ -212,22 +242,30 @@ private int modifyColor(int original) { // IWorldRenderer + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow - private Framebuffer entityOutlineFramebuffer; + private RenderTarget entityOutlineFramebuffer; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final private DefaultFramebufferSet framebufferSet; + // TODO(Ravel): Could not determine a single target +// TODO(Ravel): Could not determine a single target @Shadow @Final - private EntityRenderManager entityRenderManager; + private EntityRenderDispatcher entityRenderManager; @Unique - private Stack framebufferStack; + private Stack framebufferStack; @Unique - private Stack> framebufferHandleStack; + private Stack> framebufferHandleStack; + // TODO(Ravel): no target class +// TODO(Ravel): no target class @Inject(method = "", at = @At("TAIL")) private void init$IWorldRenderer(CallbackInfo info) { framebufferStack = new ObjectArrayList<>(); @@ -235,7 +273,7 @@ private int modifyColor(int original) { } @Override - public void meteor$pushEntityOutlineFramebuffer(Framebuffer framebuffer) { + public void meteor$pushEntityOutlineFramebuffer(RenderTarget framebuffer) { framebufferStack.push(this.entityOutlineFramebuffer); this.entityOutlineFramebuffer = framebuffer; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/indigo/AbstractTerrainRenderContextMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/indigo/AbstractTerrainRenderContextMixin.java index 10ef47bf82..76b0c4d69d 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/indigo/AbstractTerrainRenderContextMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/indigo/AbstractTerrainRenderContextMixin.java @@ -19,10 +19,11 @@ @Mixin(AbstractTerrainRenderContext.class) public abstract class AbstractTerrainRenderContextMixin { - @Final @Shadow(remap = false) + @Final + @Shadow(remap = false) protected BlockRenderInfo blockInfo; - @Inject(method = "bufferQuad", at = @At(value = "INVOKE", target = "Lnet/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractTerrainRenderContext;bufferQuad(Lnet/fabricmc/fabric/impl/client/indigo/renderer/mesh/MutableQuadViewImpl;Lnet/minecraft/client/render/VertexConsumer;)V"), cancellable = true) + @Inject(method = "bufferQuad", at = @At(value = "INVOKE", target = "Lnet/fabricmc/fabric/impl/client/indigo/renderer/render/AbstractTerrainRenderContext;bufferQuad(Lnet/fabricmc/fabric/impl/client/indigo/renderer/mesh/MutableQuadViewImpl;Lcom/mojang/blaze3d/vertex/VertexConsumer;)V"), cancellable = true) private void onBufferQuad(MutableQuadViewImpl quad, CallbackInfo ci) { int alpha = Xray.getAlpha(blockInfo.blockState, blockInfo.blockPos); diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/indigo/BlockRenderInfoMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/indigo/BlockRenderInfoMixin.java index db2c459473..ecbcb42066 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/indigo/BlockRenderInfoMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/indigo/BlockRenderInfoMixin.java @@ -9,10 +9,10 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.Xray; import net.fabricmc.fabric.impl.client.indigo.renderer.render.BlockRenderInfo; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.BlockRenderView; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockAndTintGetter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -23,7 +23,7 @@ public abstract class BlockRenderInfoMixin { public BlockState blockState; @Shadow - public BlockRenderView blockView; + public BlockAndTintGetter blockView; @Shadow public BlockPos blockPos; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/lithium/ChunkAwareBlockCollisionSweeperMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/lithium/ChunkAwareBlockCollisionSweeperMixin.java index 4fee2f4f8e..75b86864ed 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/lithium/ChunkAwareBlockCollisionSweeperMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/lithium/ChunkAwareBlockCollisionSweeperMixin.java @@ -11,28 +11,30 @@ import meteordevelopment.meteorclient.events.world.CollisionShapeEvent; import net.caffeinemc.mods.lithium.common.entity.movement.ChunkAwareBlockCollisionSweeper; import net.caffeinemc.mods.lithium.common.entity.movement.ChunkAwareBlockCollisionSweeperVoxelShape; -import net.minecraft.block.BlockState; -import net.minecraft.client.MinecraftClient; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.Box; -import net.minecraft.util.shape.VoxelShape; -import net.minecraft.util.shape.VoxelShapes; -import net.minecraft.world.World; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.shapes.VoxelShape; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.level.Level; import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @Mixin(value = ChunkAwareBlockCollisionSweeperVoxelShape.class) public abstract class ChunkAwareBlockCollisionSweeperMixin extends ChunkAwareBlockCollisionSweeper { - public ChunkAwareBlockCollisionSweeperMixin(World world, @Nullable Entity entity, Box box, boolean hideLastCollision) { + public ChunkAwareBlockCollisionSweeperMixin(Level world, @Nullable Entity entity, AABB box, boolean hideLastCollision) { super(world, entity, box, hideLastCollision); } - @ModifyExpressionValue(method = "computeNext()Lnet/minecraft/util/shape/VoxelShape;", at = @At(value = "INVOKE", target = "Lnet/minecraft/block/ShapeContext;getCollisionShape(Lnet/minecraft/block/BlockState;Lnet/minecraft/world/CollisionView;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/util/shape/VoxelShape;")) + // TODO(Ravel): target method computeNext with the signature not found +// TODO(Ravel): target method computeNext with the signature not found + @ModifyExpressionValue(method = "computeNext()Lnet/minecraft/util/shape/VoxelShape;", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/phys/shapes/CollisionContext;getCollisionShape(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/CollisionGetter;Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/phys/shapes/VoxelShape;")) private VoxelShape modifyCollisionShape(VoxelShape original, @Local(name = "state") BlockState state) { - if (world != MinecraftClient.getInstance().world) return original; + if (world != Minecraft.getInstance().world) return original; CollisionShapeEvent event = MeteorClient.EVENT_BUS.post(CollisionShapeEvent.get(state, pos, original)); - return event.isCancelled() ? VoxelShapes.empty() : event.shape; + return event.isCancelled() ? Shapes.empty() : event.shape; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/lithium/LithiumEntityCollisionsMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/lithium/LithiumEntityCollisionsMixin.java index 2cacb89ee5..b3ab201fcf 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/lithium/LithiumEntityCollisionsMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/lithium/LithiumEntityCollisionsMixin.java @@ -8,8 +8,8 @@ import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.world.Collisions; import net.caffeinemc.mods.lithium.common.entity.LithiumEntityCollisions; -import net.minecraft.util.math.Box; -import net.minecraft.world.border.WorldBorder; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.level.border.WorldBorder; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -18,7 +18,7 @@ @Mixin(value = LithiumEntityCollisions.class) public abstract class LithiumEntityCollisionsMixin { @Inject(method = "isWithinWorldBorder", at = @At("HEAD"), cancellable = true) - private static void onIsWithinWorldBorder(WorldBorder border, Box box, CallbackInfoReturnable cir) { + private static void onIsWithinWorldBorder(WorldBorder border, AABB box, CallbackInfoReturnable cir) { if (Modules.get().get(Collisions.class).ignoreBorder()) { cir.setReturnValue(true); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/sodium/MeshVertexConsumerMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/sodium/MeshVertexConsumerMixin.java index d5739a2e91..7f77669d52 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/sodium/MeshVertexConsumerMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/sodium/MeshVertexConsumerMixin.java @@ -9,7 +9,7 @@ import com.mojang.blaze3d.vertex.VertexFormatElement; import meteordevelopment.meteorclient.utils.render.MeshBuilderVertexConsumerProvider; import net.caffeinemc.mods.sodium.api.vertex.buffer.VertexBufferWriter; -import net.minecraft.client.render.VertexConsumer; +import com.mojang.blaze3d.vertex.VertexConsumer; import org.lwjgl.system.MemoryStack; import org.lwjgl.system.MemoryUtil; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumBlockOcclusionCacheMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumBlockOcclusionCacheMixin.java index 42f9a83e52..7e28e8ebd5 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumBlockOcclusionCacheMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumBlockOcclusionCacheMixin.java @@ -8,11 +8,11 @@ import com.llamalad7.mixinextras.injector.ModifyReturnValue; import meteordevelopment.meteorclient.systems.modules.Modules; import meteordevelopment.meteorclient.systems.modules.render.Xray; -import net.caffeinemc.mods.sodium.client.render.model.AbstractBlockRenderContext; -import net.caffeinemc.mods.sodium.client.world.LevelSlice; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; +import net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.BlockOcclusionCache; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockGetter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -25,7 +25,7 @@ public abstract class SodiumBlockOcclusionCacheMixin { @Shadow protected BlockState state; - @Shadow protected BlockPos pos; + @Shadow protected BlockPos pos; @Shadow protected LevelSlice slice; @Unique private Xray xray; @@ -44,7 +44,10 @@ private void onInit(CallbackInfo info) { @ModifyReturnValue(method = "shouldDrawSide", at = @At("RETURN")) private boolean shouldDrawSide(boolean original, Direction facing) { - if (!xray.isActive()) return original; - return xray.modifyDrawSide(state, slice, pos, facing, original); + if (xray.isActive()) { + return xray.modifyDrawSide(state, level, pos, facing, original); + } + + return original; } } diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumBlockRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumBlockRendererMixin.java index 499bfc1597..029fa19ba4 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumBlockRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumBlockRendererMixin.java @@ -10,9 +10,9 @@ import net.caffeinemc.mods.sodium.client.render.chunk.terrain.material.DefaultMaterials; import net.caffeinemc.mods.sodium.client.render.chunk.terrain.material.Material; import net.caffeinemc.mods.sodium.client.render.model.MutableQuadViewImpl; -import net.minecraft.block.BlockState; -import net.minecraft.client.render.model.BlockStateModel; -import net.minecraft.util.math.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.client.renderer.block.model.BlockStateModel; +import net.minecraft.core.BlockPos; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumDefaultFluidRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumDefaultFluidRendererMixin.java index f4c1d78e38..5abb880101 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumDefaultFluidRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumDefaultFluidRendererMixin.java @@ -16,10 +16,10 @@ import net.caffeinemc.mods.sodium.client.render.chunk.terrain.material.Material; import net.caffeinemc.mods.sodium.client.render.chunk.translucent_sorting.TranslucentGeometryCollector; import net.caffeinemc.mods.sodium.client.world.LevelSlice; -import net.minecraft.client.texture.Sprite; -import net.minecraft.fluid.FluidState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -39,7 +39,7 @@ public abstract class SodiumDefaultFluidRendererMixin { private int xrayAlpha; @Inject(method = "render", at = @At("HEAD"), cancellable = true) - private void onRender(LevelSlice level, net.minecraft.block.BlockState blockState, FluidState fluidState, BlockPos blockPos, BlockPos offset, TranslucentGeometryCollector collector, ChunkModelBuilder meshBuilder, Material material, ColorProvider colorProvider, Sprite[] sprites, CallbackInfo ci) { + private void onRender(LevelSlice level, net.minecraft.block.BlockState blockState, FluidState fluidState, BlockPos blockPos, BlockPos offset, TranslucentGeometryCollector collector, ChunkModelBuilder meshBuilder, Material material, ColorProvider colorProvider, TextureAtlasSprite[] sprites, CallbackInfo ci) { xrayAlpha = Xray.getAlpha(fluidState.getBlockState(), blockPos); // Cancel block rendering when alpha is 0, required for Iris support but unnecessary to check for shaders, we already force be disabled when Xray is enabled @@ -57,7 +57,7 @@ private void onUpdateQuad(ModelQuadViewMutable quad, LevelSlice level, BlockPos } } - @ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer;writeQuad(Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/buffers/ChunkModelBuilder;Lnet/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/TranslucentGeometryCollector;Lnet/caffeinemc/mods/sodium/client/render/chunk/terrain/material/Material;Lnet/minecraft/util/math/BlockPos;Lnet/caffeinemc/mods/sodium/client/model/quad/ModelQuadView;Lnet/caffeinemc/mods/sodium/client/model/quad/properties/ModelQuadFacing;Z)V"), index = 2) + @ModifyArg(method = "render", at = @At(value = "INVOKE", target = "Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/DefaultFluidRenderer;writeQuad(Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/buffers/ChunkModelBuilder;Lnet/caffeinemc/mods/sodium/client/render/chunk/translucent_sorting/TranslucentGeometryCollector;Lnet/caffeinemc/mods/sodium/client/render/chunk/terrain/material/Material;Lnet/minecraft/core/BlockPos;Lnet/caffeinemc/mods/sodium/client/model/quad/ModelQuadView;Lnet/caffeinemc/mods/sodium/client/model/quad/properties/ModelQuadFacing;Z)V"), index = 2) private Material modifyMaterial(Material material) { if (xrayAlpha != -1) { return DefaultMaterials.TRANSLUCENT; diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumFluidRendererImplDefaultRenderContextMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumFluidRendererImplDefaultRenderContextMixin.java index 93f0fbde01..c5c3a69001 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumFluidRendererImplDefaultRenderContextMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/sodium/SodiumFluidRendererImplDefaultRenderContextMixin.java @@ -12,10 +12,10 @@ import net.caffeinemc.mods.sodium.client.model.color.ColorProvider; import net.caffeinemc.mods.sodium.client.model.quad.ModelQuadView; import net.caffeinemc.mods.sodium.client.world.LevelSlice; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.FluidState; -import net.minecraft.registry.tag.FluidTags; -import net.minecraft.util.math.BlockPos; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.FluidState; +import net.minecraft.tags.FluidTags; +import net.minecraft.core.BlockPos; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; @@ -43,7 +43,7 @@ private void onGetColorProvider(Fluid fluid, CallbackInfoReturnable - * + *

* The entity is only set after the render state is retrieved in EntityRenderDispatcher#render, so make sure not * to call this before that point (e.g. mixing into an updateRenderState method), otherwise the entity returned will * not be the same one that the render state is referring to. * * @return The entity that the render state refers to - * - * @see EntityRenderManagerMixin#getAndUpdateRenderState$setEntity(EntityRenderState, Entity, float) + * @see EntityRenderDispatcherMixin#getAndUpdateRenderState$setEntity(EntityRenderState, Entity, float) */ @Nullable(value = "EntityCulling mod can prevent the code that sets the entity from running") Entity meteor$getEntity(); diff --git a/src/main/java/meteordevelopment/meteorclient/mixininterface/IMessageHandler.java b/src/main/java/meteordevelopment/meteorclient/mixininterface/IMessageHandler.java index 57a5793337..35d6ca7f17 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixininterface/IMessageHandler.java +++ b/src/main/java/meteordevelopment/meteorclient/mixininterface/IMessageHandler.java @@ -6,11 +6,13 @@ package meteordevelopment.meteorclient.mixininterface; import com.mojang.authlib.GameProfile; -import net.minecraft.client.gui.hud.MessageIndicator; -import net.minecraft.network.message.MessageSignatureData; -import net.minecraft.text.Text; +import net.minecraft.client.GuiMessageTag; +import net.minecraft.network.chat.MessageSignature; +import net.minecraft.network.chat.Component; public interface IMessageHandler { - /** Only valid inside of {@link net.minecraft.client.gui.hud.ChatHud#addMessage(Text, MessageSignatureData, MessageIndicator)} call */ + /** + * Only valid inside of {@link net.minecraft.client.gui.hud.ChatHud#addMessage(Component, MessageSignature, GuiMessageTag)} call + */ GameProfile meteor$getSender(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixininterface/IMinecraftClient.java b/src/main/java/meteordevelopment/meteorclient/mixininterface/IMinecraftClient.java index 8b36ef95af..9b43688ca3 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixininterface/IMinecraftClient.java +++ b/src/main/java/meteordevelopment/meteorclient/mixininterface/IMinecraftClient.java @@ -5,10 +5,10 @@ package meteordevelopment.meteorclient.mixininterface; -import net.minecraft.client.gl.Framebuffer; +import com.mojang.blaze3d.pipeline.RenderTarget; public interface IMinecraftClient { void meteor$rightClick(); - void meteor$setFramebuffer(Framebuffer framebuffer); + void meteor$setFramebuffer(RenderTarget framebuffer); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixininterface/IPlayerInteractEntityC2SPacket.java b/src/main/java/meteordevelopment/meteorclient/mixininterface/IPlayerInteractEntityC2SPacket.java index 70bfc1dbee..84ce5fe23f 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixininterface/IPlayerInteractEntityC2SPacket.java +++ b/src/main/java/meteordevelopment/meteorclient/mixininterface/IPlayerInteractEntityC2SPacket.java @@ -5,11 +5,11 @@ package meteordevelopment.meteorclient.mixininterface; -import net.minecraft.entity.Entity; -import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; +import net.minecraft.world.entity.Entity; +import net.minecraft.network.protocol.game.ServerboundInteractPacket; public interface IPlayerInteractEntityC2SPacket { - PlayerInteractEntityC2SPacket.InteractType meteor$getType(); + ServerboundInteractPacket.ActionType meteor$getType(); Entity meteor$getEntity(); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixininterface/IRaycastContext.java b/src/main/java/meteordevelopment/meteorclient/mixininterface/IRaycastContext.java index e32816f66d..1bcf84fde9 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixininterface/IRaycastContext.java +++ b/src/main/java/meteordevelopment/meteorclient/mixininterface/IRaycastContext.java @@ -5,10 +5,10 @@ package meteordevelopment.meteorclient.mixininterface; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.RaycastContext; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.phys.Vec3; +import net.minecraft.world.level.ClipContext; public interface IRaycastContext { - void meteor$set(Vec3d start, Vec3d end, RaycastContext.ShapeType shapeType, RaycastContext.FluidHandling fluidHandling, Entity entity); + void meteor$set(Vec3 start, Vec3 end, ClipContext.Block shapeType, ClipContext.Fluid fluidHandling, Entity entity); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixininterface/IVec3d.java b/src/main/java/meteordevelopment/meteorclient/mixininterface/IVec3d.java index 2cbb4c97da..2d40f8a1d9 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixininterface/IVec3d.java +++ b/src/main/java/meteordevelopment/meteorclient/mixininterface/IVec3d.java @@ -5,27 +5,27 @@ package meteordevelopment.meteorclient.mixininterface; -import net.minecraft.util.math.Vec3d; -import net.minecraft.util.math.Vec3i; +import net.minecraft.world.phys.Vec3; +import net.minecraft.core.Vec3i; import org.joml.Vector3d; @SuppressWarnings("UnusedReturnValue") public interface IVec3d { - Vec3d meteor$set(double x, double y, double z); + Vec3 meteor$set(double x, double y, double z); - default Vec3d meteor$set(Vec3i vec) { + default Vec3 meteor$set(Vec3i vec) { return meteor$set(vec.getX(), vec.getY(), vec.getZ()); } - default Vec3d meteor$set(Vector3d vec) { + default Vec3 meteor$set(Vector3d vec) { return meteor$set(vec.x, vec.y, vec.z); } - default Vec3d meteor$set(Vec3d pos) { + default Vec3 meteor$set(Vec3 pos) { return meteor$set(pos.x, pos.y, pos.z); } - Vec3d meteor$setXZ(double x, double z); + Vec3 meteor$setXZ(double x, double z); - Vec3d meteor$setY(double y); + Vec3 meteor$setY(double y); } diff --git a/src/main/java/meteordevelopment/meteorclient/mixininterface/IWorldRenderer.java b/src/main/java/meteordevelopment/meteorclient/mixininterface/IWorldRenderer.java index d114806144..549362dd8f 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixininterface/IWorldRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/mixininterface/IWorldRenderer.java @@ -5,10 +5,10 @@ package meteordevelopment.meteorclient.mixininterface; -import net.minecraft.client.gl.Framebuffer; +import com.mojang.blaze3d.pipeline.RenderTarget; public interface IWorldRenderer { - void meteor$pushEntityOutlineFramebuffer(Framebuffer framebuffer); + void meteor$pushEntityOutlineFramebuffer(RenderTarget framebuffer); void meteor$popEntityOutlineFramebuffer(); } diff --git a/src/main/java/meteordevelopment/meteorclient/pathing/BaritonePathManager.java b/src/main/java/meteordevelopment/meteorclient/pathing/BaritonePathManager.java index 5a7ce7d4d1..8bb18d5c5e 100644 --- a/src/main/java/meteordevelopment/meteorclient/pathing/BaritonePathManager.java +++ b/src/main/java/meteordevelopment/meteorclient/pathing/BaritonePathManager.java @@ -17,11 +17,11 @@ import meteordevelopment.meteorclient.events.world.TickEvent; import meteordevelopment.orbit.EventHandler; import meteordevelopment.orbit.EventPriority; -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Vec3d; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.BlockPos; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; import java.util.function.Predicate; @@ -157,11 +157,11 @@ public void tick() { if (timer <= 0) { timer = 20; - Vec3d pos = mc.player.getEntityPos(); + Vec3 pos = mc.player.getEntityPos(); float theta = (float) Math.toRadians(yaw); - x = (int) Math.floor(pos.x - (double) MathHelper.sin(theta) * 100); - z = (int) Math.floor(pos.z + (double) MathHelper.cos(theta) * 100); + x = (int) Math.floor(pos.x - (double) Mth.sin(theta) * 100); + z = (int) Math.floor(pos.z + (double) Mth.cos(theta) * 100); } timer--; diff --git a/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java b/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java index 8294edaa12..49234e307c 100644 --- a/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java +++ b/src/main/java/meteordevelopment/meteorclient/pathing/BaritoneSettings.java @@ -9,8 +9,8 @@ import baritone.api.utils.SettingsUtil; import meteordevelopment.meteorclient.settings.*; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.block.Block; -import net.minecraft.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.item.Item; import java.awt.*; import java.lang.reflect.*; @@ -103,8 +103,7 @@ private void createWrappers() { case "assumeWalkOnLava" -> walkOnLava = wrapper; case "assumeStep" -> step = wrapper; } - } - else if (value instanceof Double) { + } else if (value instanceof Double) { sgDouble.add(new DoubleSetting.Builder() .name(setting.getName()) .description(getDescription(setting.getName())) @@ -115,8 +114,7 @@ else if (value instanceof Double) { .onModuleActivated(doubleSetting -> doubleSetting.set((Double) setting.value)) .build() ); - } - else if (value instanceof Float) { + } else if (value instanceof Float) { sgDouble.add(new DoubleSetting.Builder() .name(setting.getName()) .description(getDescription(setting.getName())) @@ -127,8 +125,7 @@ else if (value instanceof Float) { .onModuleActivated(doubleSetting -> doubleSetting.set(((Float) setting.value).doubleValue())) .build() ); - } - else if (value instanceof Integer) { + } else if (value instanceof Integer) { Setting wrapper = sgInt.add(new IntSetting.Builder() .name(setting.getName()) .description(getDescription(setting.getName())) @@ -147,8 +144,7 @@ else if (value instanceof Integer) { .onModuleActivated(booleanSetting -> booleanSetting.set(wrapper.get() >= 255)) .build(); } - } - else if (value instanceof Long) { + } else if (value instanceof Long) { sgInt.add(new IntSetting.Builder() .name(setting.getName()) .description(getDescription(setting.getName())) @@ -157,8 +153,7 @@ else if (value instanceof Long) { .onModuleActivated(integerSetting -> integerSetting.set(((Long) setting.value).intValue())) .build() ); - } - else if (value instanceof String) { + } else if (value instanceof String) { sgString.add(new StringSetting.Builder() .name(setting.getName()) .description(getDescription(setting.getName())) @@ -167,8 +162,7 @@ else if (value instanceof String) { .onModuleActivated(stringSetting -> stringSetting.set((String) setting.value)) .build() ); - } - else if (value instanceof Color) { + } else if (value instanceof Color) { Color c = (Color) setting.value; sgColor.add(new ColorSetting.Builder() @@ -179,8 +173,7 @@ else if (value instanceof Color) { .onModuleActivated(colorSetting -> colorSetting.set(new SettingColor(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()))) .build() ); - } - else if (value instanceof List) { + } else if (value instanceof List) { Type listType = ((ParameterizedType) field.getGenericType()).getActualTypeArguments()[0]; Type type = ((ParameterizedType) listType).getActualTypeArguments()[0]; @@ -193,8 +186,7 @@ else if (value instanceof List) { .onModuleActivated(blockListSetting -> blockListSetting.set((List) setting.value)) .build() ); - } - else if (type == Item.class) { + } else if (type == Item.class) { sgItemLists.add(new ItemListSetting.Builder() .name(setting.getName()) .description(getDescription(setting.getName())) @@ -206,8 +198,7 @@ else if (type == Item.class) { } } } - } - catch (IllegalAccessException e) { + } catch (IllegalAccessException e) { throw new RuntimeException(e); } } @@ -231,14 +222,14 @@ private static void loadDescriptions() { addDescription("acceptableThrowawayItems", "Blocks that Baritone is allowed to place (as throwaway, for sneak bridging, pillaring, etc.)"); addDescription("allowBreak", "Allow Baritone to break blocks"); addDescription("allowBreakAnyway", "Blocks that baritone will be allowed to break even with allowBreak set to false"); - addDescription("allowDiagonalAscend","Allow diagonal ascending"); + addDescription("allowDiagonalAscend", "Allow diagonal ascending"); addDescription("allowDiagonalDescend", "Allow descending diagonally"); addDescription("allowDownward", "Allow mining the block directly beneath its feet"); addDescription("allowInventory", "Allow Baritone to move items in your inventory to your hotbar"); addDescription("allowJumpAt256", "If true, parkour is allowed to make jumps when standing on blocks at the maximum height, so player feet is y=256"); addDescription("allowOnlyExposedOres", "This will only allow baritone to mine exposed ores, can be used to stop ore obfuscators on servers that use them."); addDescription("allowOnlyExposedOresDistance", "When allowOnlyExposedOres is enabled this is the distance around to search."); - addDescription("allowOvershootDiagonalDescend","Is it okay to sprint through a descend followed by a diagonal? The player overshoots the landing, but not enough to fall off."); + addDescription("allowOvershootDiagonalDescend", "Is it okay to sprint through a descend followed by a diagonal? The player overshoots the landing, but not enough to fall off."); addDescription("allowParkour", "You know what it is"); addDescription("allowParkourAscend", "This should be monetized it's so good"); addDescription("allowParkourPlace", "Actually pretty reliable."); diff --git a/src/main/java/meteordevelopment/meteorclient/pathing/IPathManager.java b/src/main/java/meteordevelopment/meteorclient/pathing/IPathManager.java index 77e5344612..fe17057bf7 100644 --- a/src/main/java/meteordevelopment/meteorclient/pathing/IPathManager.java +++ b/src/main/java/meteordevelopment/meteorclient/pathing/IPathManager.java @@ -7,9 +7,9 @@ import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.Settings; -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.BlockPos; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.BlockPos; import java.util.function.Predicate; @@ -19,11 +19,17 @@ public interface IPathManager { boolean isPathing(); void pause(); + void resume(); + void stop(); - default void moveTo(BlockPos pos) { moveTo(pos, false); } + default void moveTo(BlockPos pos) { + moveTo(pos, false); + } + void moveTo(BlockPos pos, boolean ignoreY); + void moveInDirection(float yaw); void mine(Block... blocks); @@ -31,6 +37,7 @@ public interface IPathManager { void follow(Predicate entity); float getTargetYaw(); + float getTargetPitch(); ISettings getSettings(); @@ -39,9 +46,11 @@ interface ISettings { Settings get(); Setting getWalkOnWater(); + Setting getWalkOnLava(); Setting getStep(); + Setting getNoFall(); void save(); diff --git a/src/main/java/meteordevelopment/meteorclient/pathing/NopPathManager.java b/src/main/java/meteordevelopment/meteorclient/pathing/NopPathManager.java index dc2ab84d21..bafecd2137 100644 --- a/src/main/java/meteordevelopment/meteorclient/pathing/NopPathManager.java +++ b/src/main/java/meteordevelopment/meteorclient/pathing/NopPathManager.java @@ -8,9 +8,9 @@ import meteordevelopment.meteorclient.settings.BoolSetting; import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.Settings; -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.util.math.BlockPos; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.entity.Entity; +import net.minecraft.core.BlockPos; import java.util.function.Predicate; @@ -28,25 +28,32 @@ public boolean isPathing() { } @Override - public void pause() {} + public void pause() { + } @Override - public void resume() {} + public void resume() { + } @Override - public void stop() {} + public void stop() { + } @Override - public void moveTo(BlockPos pos, boolean ignoreY) {} + public void moveTo(BlockPos pos, boolean ignoreY) { + } @Override - public void moveInDirection(float yaw) {} + public void moveInDirection(float yaw) { + } @Override - public void mine(Block... blocks) {} + public void mine(Block... blocks) { + } @Override - public void follow(Predicate entity) {} + public void follow(Predicate entity) { + } @Override public float getTargetYaw() { @@ -97,6 +104,7 @@ public Setting getNoFall() { } @Override - public void save() {} + public void save() { + } } } diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/FixedUniformStorage.java b/src/main/java/meteordevelopment/meteorclient/renderer/FixedUniformStorage.java index 11dc24c1cb..51d78d1cc2 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/FixedUniformStorage.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/FixedUniformStorage.java @@ -9,19 +9,19 @@ import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.systems.GpuDevice; import com.mojang.blaze3d.systems.RenderSystem; -import net.minecraft.client.gl.DynamicUniformStorage; -import net.minecraft.client.gl.MappableRingBuffer; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.renderer.DynamicUniformStorage; +import net.minecraft.client.renderer.MappableRingBuffer; +import net.minecraft.util.Mth; import java.nio.ByteBuffer; /** * UBO storage with a constant size. Exceeding this size causes an {@link IndexOutOfBoundsException} to be thrown. * - * @see DynamicUniformStorage * @author Crosby + * @see DynamicUniformStorage */ -public class FixedUniformStorage { +public class FixedUniformStorage { private final MappableRingBuffer buffer; private final int blockSize; private final int capacity; @@ -29,9 +29,9 @@ public class FixedUniformStorage { public FixedUniformStorage(String name, int blockSize, int capacity) { GpuDevice gpuDevice = RenderSystem.getDevice(); - this.blockSize = MathHelper.roundUpToMultiple(blockSize, gpuDevice.getUniformOffsetAlignment()); + this.blockSize = Mth.roundUpToMultiple(blockSize, gpuDevice.getUniformOffsetAlignment()); this.capacity = capacity; - int alignedCapacity = MathHelper.smallestEncompassingPowerOfTwo(capacity); + int alignedCapacity = Mth.smallestEncompassingPowerOfTwo(capacity); this.size = 0; this.buffer = new MappableRingBuffer(() -> name + " x" + this.blockSize, 130, this.blockSize * alignedCapacity); } diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/FullScreenRenderer.java b/src/main/java/meteordevelopment/meteorclient/renderer/FullScreenRenderer.java index 0657b05fc1..f62a27be67 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/FullScreenRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/FullScreenRenderer.java @@ -20,11 +20,12 @@ public class FullScreenRenderer { @Deprecated(forRemoval = true) public static MeshBuilder mesh; - private FullScreenRenderer() {} + private FullScreenRenderer() { + } @PreInit public static void init() { - mesh = new MeshBuilder(MeteorVertexFormats.POS2, VertexFormat.DrawMode.TRIANGLES, 4, 6); + mesh = new MeshBuilder(MeteorVertexFormats.POS2, VertexFormat.Mode.TRIANGLES, 4, 6); mesh.begin(); diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/MeshBuilder.java b/src/main/java/meteordevelopment/meteorclient/renderer/MeshBuilder.java index 216a475f02..5da9e11d4c 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/MeshBuilder.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/MeshBuilder.java @@ -11,7 +11,7 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.render.color.Color; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.util.math.Vec3d; +import net.minecraft.world.phys.Vec3; import org.lwjgl.BufferUtils; import java.nio.ByteBuffer; @@ -43,13 +43,13 @@ public MeshBuilder(RenderPipeline pipeline) { this(pipeline.getVertexFormat(), pipeline.getVertexFormatMode()); } - public MeshBuilder(VertexFormat format, VertexFormat.DrawMode drawMode) { + public MeshBuilder(VertexFormat format, VertexFormat.Mode drawMode) { this.format = format; primitiveVerticesSize = format.getVertexSize(); primitiveIndicesCount = drawMode.firstVertexCount; } - public MeshBuilder(VertexFormat format, VertexFormat.DrawMode drawMode, int vertexCount, int indexCount) { + public MeshBuilder(VertexFormat format, VertexFormat.Mode drawMode, int vertexCount, int indexCount) { this(format, drawMode); allocateBuffers(vertexCount, indexCount); } @@ -64,12 +64,11 @@ public void begin() { building = true; if (Utils.rendering3D) { - Vec3d camera = mc.gameRenderer.getCamera().getCameraPos(); + Vec3 camera = mc.gameRenderer.getCamera().getCameraPos(); cameraX = camera.x; cameraZ = camera.z; - } - else { + } else { cameraX = 0; cameraZ = 0; } diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java b/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java index 738e623776..9a21962052 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/MeshRenderer.java @@ -15,12 +15,12 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.render.RenderUtils; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.gl.Framebuffer; -import net.minecraft.client.gl.GpuSampler; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.Pair; -import net.minecraft.util.math.ColorHelper; -import net.minecraft.util.math.Vec3d; +import com.mojang.blaze3d.pipeline.RenderTarget; +import com.mojang.blaze3d.textures.GpuSampler; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.util.Tuple; +import net.minecraft.util.ARGB; +import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.Nullable; import org.joml.Matrix4f; @@ -44,9 +44,10 @@ public class MeshRenderer { private @Nullable GpuBuffer indexBuffer; private Matrix4f matrix; private final HashMap uniforms = new HashMap<>(); - private final HashMap> samplers = new HashMap<>(); + private final HashMap> samplers = new HashMap<>(); - private MeshRenderer() {} + private MeshRenderer() { + } public static MeshRenderer begin() { if (taken) @@ -62,7 +63,7 @@ public MeshRenderer attachments(GpuTextureView color, GpuTextureView depth) { return this; } - public MeshRenderer attachments(Framebuffer framebuffer) { + public MeshRenderer attachments(RenderTarget framebuffer) { colorAttachment = framebuffer.getColorAttachmentView(); depthAttachment = framebuffer.getDepthAttachmentView(); return this; @@ -94,7 +95,7 @@ public MeshRenderer mesh(MeshBuilder mesh, Matrix4f matrix) { return this.transform(matrix); } - public MeshRenderer mesh(MeshBuilder mesh, MatrixStack matrices) { + public MeshRenderer mesh(MeshBuilder mesh, PoseStack matrices) { this.mesh = mesh; return this.transform(matrices); } @@ -104,7 +105,7 @@ public MeshRenderer transform(Matrix4f matrix) { return this; } - public MeshRenderer transform(MatrixStack matrices) { + public MeshRenderer transform(PoseStack matrices) { this.matrix = matrices.peek().getPositionMatrix(); return this; } @@ -154,7 +155,7 @@ public void end() { { OptionalInt clearColor = this.clearColor != null ? - OptionalInt.of(ColorHelper.getArgb(this.clearColor.a, this.clearColor.r, this.clearColor.g, this.clearColor.b)) : + OptionalInt.of(ARGB.getArgb(this.clearColor.a, this.clearColor.r, this.clearColor.g, this.clearColor.b)) : OptionalInt.empty(); GpuBufferSlice meshData = MeshUniforms.write(RenderUtils.projection, RenderSystem.getModelViewStack()); @@ -201,7 +202,7 @@ public void end() { } private static void applyCameraPos() { - Vec3d cameraPos = mc.gameRenderer.getCamera().getCameraPos(); + Vec3 cameraPos = mc.gameRenderer.getCamera().getCameraPos(); RenderSystem.getModelViewStack().translate(0, (float) -cameraPos.y, 0); } } diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/MeshUniforms.java b/src/main/java/meteordevelopment/meteorclient/renderer/MeshUniforms.java index f1906fef54..39e0055717 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/MeshUniforms.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/MeshUniforms.java @@ -8,7 +8,7 @@ import com.mojang.blaze3d.buffers.GpuBufferSlice; import com.mojang.blaze3d.buffers.Std140Builder; import com.mojang.blaze3d.buffers.Std140SizeCalculator; -import net.minecraft.client.gl.DynamicUniformStorage; +import net.minecraft.client.renderer.DynamicUniformStorage; import org.joml.Matrix4f; import java.nio.ByteBuffer; @@ -34,7 +34,7 @@ public static GpuBufferSlice write(Matrix4f proj, Matrix4f modelView) { return STORAGE.write(DATA); } - private static final class Data implements DynamicUniformStorage.Uploadable { + private static final class Data implements DynamicUniformStorage.DynamicUniform { private Matrix4f proj; private Matrix4f modelView; diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/MeteorRenderPipelines.java b/src/main/java/meteordevelopment/meteorclient/renderer/MeteorRenderPipelines.java index 933f4c039d..5516886fb9 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/MeteorRenderPipelines.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/MeteorRenderPipelines.java @@ -12,10 +12,10 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.VertexFormat; import meteordevelopment.meteorclient.MeteorClient; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gl.UniformType; -import net.minecraft.client.render.VertexFormats; -import net.minecraft.resource.ResourceManager; +import net.minecraft.client.Minecraft; +import com.mojang.blaze3d.shaders.UniformType; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; +import net.minecraft.server.packs.resources.ResourceManager; import org.apache.commons.io.IOUtils; import java.io.IOException; @@ -36,7 +36,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline WORLD_COLORED = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLocation(MeteorClient.identifier("pipeline/world_colored")) - .withVertexFormat(VertexFormats.POSITION_COLOR, VertexFormat.DrawMode.TRIANGLES) + .withVertexFormat(DefaultVertexFormat.POSITION_COLOR, VertexFormat.Mode.TRIANGLES) .withVertexShader(MeteorClient.identifier("shaders/pos_color.vert")) .withFragmentShader(MeteorClient.identifier("shaders/pos_color.frag")) .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) @@ -49,7 +49,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline WORLD_COLORED_LINES = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLineSmooth() .withLocation(MeteorClient.identifier("pipeline/world_colored_lines")) - .withVertexFormat(VertexFormats.POSITION_COLOR, VertexFormat.DrawMode.DEBUG_LINES) + .withVertexFormat(DefaultVertexFormat.POSITION_COLOR, VertexFormat.Mode.DEBUG_LINES) .withVertexShader(MeteorClient.identifier("shaders/pos_color.vert")) .withFragmentShader(MeteorClient.identifier("shaders/pos_color.frag")) .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) @@ -61,7 +61,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline WORLD_COLORED_DEPTH = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLocation(MeteorClient.identifier("pipeline/world_colored_depth")) - .withVertexFormat(VertexFormats.POSITION_COLOR, VertexFormat.DrawMode.TRIANGLES) + .withVertexFormat(DefaultVertexFormat.POSITION_COLOR, VertexFormat.Mode.TRIANGLES) .withVertexShader(MeteorClient.identifier("shaders/pos_color.vert")) .withFragmentShader(MeteorClient.identifier("shaders/pos_color.frag")) .withDepthTestFunction(DepthTestFunction.LEQUAL_DEPTH_TEST) @@ -74,7 +74,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline WORLD_COLORED_LINES_DEPTH = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLineSmooth() .withLocation(MeteorClient.identifier("pipeline/world_colored_lines_depth")) - .withVertexFormat(VertexFormats.POSITION_COLOR, VertexFormat.DrawMode.DEBUG_LINES) + .withVertexFormat(DefaultVertexFormat.POSITION_COLOR, VertexFormat.Mode.DEBUG_LINES) .withVertexShader(MeteorClient.identifier("shaders/pos_color.vert")) .withFragmentShader(MeteorClient.identifier("shaders/pos_color.frag")) .withDepthTestFunction(DepthTestFunction.LEQUAL_DEPTH_TEST) @@ -88,7 +88,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline UI_COLORED = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLocation(MeteorClient.identifier("pipeline/ui_colored")) - .withVertexFormat(MeteorVertexFormats.POS2_COLOR, VertexFormat.DrawMode.TRIANGLES) + .withVertexFormat(MeteorVertexFormats.POS2_COLOR, VertexFormat.Mode.TRIANGLES) .withVertexShader(MeteorClient.identifier("shaders/pos_color.vert")) .withFragmentShader(MeteorClient.identifier("shaders/pos_color.frag")) .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) @@ -100,7 +100,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline UI_COLORED_LINES = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLocation(MeteorClient.identifier("pipeline/ui_colored_lines")) - .withVertexFormat(MeteorVertexFormats.POS2_COLOR, VertexFormat.DrawMode.DEBUG_LINES) + .withVertexFormat(MeteorVertexFormats.POS2_COLOR, VertexFormat.Mode.DEBUG_LINES) .withVertexShader(MeteorClient.identifier("shaders/pos_color.vert")) .withFragmentShader(MeteorClient.identifier("shaders/pos_color.frag")) .withDepthTestFunction(DepthTestFunction.NO_DEPTH_TEST) @@ -112,7 +112,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline UI_TEXTURED = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLocation(MeteorClient.identifier("pipeline/ui_textured")) - .withVertexFormat(MeteorVertexFormats.POS2_TEXTURE_COLOR, VertexFormat.DrawMode.TRIANGLES) + .withVertexFormat(MeteorVertexFormats.POS2_TEXTURE_COLOR, VertexFormat.Mode.TRIANGLES) .withVertexShader(MeteorClient.identifier("shaders/pos_tex_color.vert")) .withFragmentShader(MeteorClient.identifier("shaders/pos_tex_color.frag")) .withSampler("u_Texture") @@ -125,7 +125,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline UI_TEXT = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLocation(MeteorClient.identifier("pipeline/ui_text")) - .withVertexFormat(MeteorVertexFormats.POS2_TEXTURE_COLOR, VertexFormat.DrawMode.TRIANGLES) + .withVertexFormat(MeteorVertexFormats.POS2_TEXTURE_COLOR, VertexFormat.Mode.TRIANGLES) .withVertexShader(MeteorClient.identifier("shaders/text.vert")) .withFragmentShader(MeteorClient.identifier("shaders/text.frag")) .withSampler("u_Texture") @@ -140,7 +140,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline POST_OUTLINE = add(new ExtendedRenderPipelineBuilder() .withLocation(MeteorClient.identifier("pipeline/post/outline")) - .withVertexFormat(MeteorVertexFormats.POS2, VertexFormat.DrawMode.TRIANGLES) + .withVertexFormat(MeteorVertexFormats.POS2, VertexFormat.Mode.TRIANGLES) .withVertexShader(MeteorClient.identifier("shaders/post-process/base.vert")) .withFragmentShader(MeteorClient.identifier("shaders/post-process/outline.frag")) .withSampler("u_Texture") @@ -155,7 +155,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline POST_IMAGE = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLocation(MeteorClient.identifier("pipeline/post/image")) - .withVertexFormat(MeteorVertexFormats.POS2, VertexFormat.DrawMode.TRIANGLES) + .withVertexFormat(MeteorVertexFormats.POS2, VertexFormat.Mode.TRIANGLES) .withVertexShader(MeteorClient.identifier("shaders/post-process/base.vert")) .withFragmentShader(MeteorClient.identifier("shaders/post-process/image.frag")) .withSampler("u_Texture") @@ -173,7 +173,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline BLUR_DOWN = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLocation(MeteorClient.identifier("pipeline/blur/down")) - .withVertexFormat(MeteorVertexFormats.POS2, VertexFormat.DrawMode.TRIANGLES) + .withVertexFormat(MeteorVertexFormats.POS2, VertexFormat.Mode.TRIANGLES) .withVertexShader(MeteorClient.identifier("shaders/blur.vert")) .withFragmentShader(MeteorClient.identifier("shaders/blur_down.frag")) .withSampler("u_Texture") @@ -187,7 +187,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline BLUR_UP = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLocation(MeteorClient.identifier("pipeline/blur/up")) - .withVertexFormat(MeteorVertexFormats.POS2, VertexFormat.DrawMode.TRIANGLES) + .withVertexFormat(MeteorVertexFormats.POS2, VertexFormat.Mode.TRIANGLES) .withVertexShader(MeteorClient.identifier("shaders/blur.vert")) .withFragmentShader(MeteorClient.identifier("shaders/blur_up.frag")) .withSampler("u_Texture") @@ -201,7 +201,7 @@ public abstract class MeteorRenderPipelines { public static final RenderPipeline BLUR_PASSTHROUGH = add(new ExtendedRenderPipelineBuilder(MESH_UNIFORMS) .withLocation(MeteorClient.identifier("pipeline/blur/up")) - .withVertexFormat(MeteorVertexFormats.POS2, VertexFormat.DrawMode.TRIANGLES) + .withVertexFormat(MeteorVertexFormats.POS2, VertexFormat.Mode.TRIANGLES) .withVertexShader(MeteorClient.identifier("shaders/passthrough.vert")) .withFragmentShader(MeteorClient.identifier("shaders/passthrough.frag")) .withSampler("u_Texture") @@ -219,7 +219,7 @@ private static RenderPipeline add(RenderPipeline pipeline) { public static void precompile() { GpuDevice device = RenderSystem.getDevice(); - ResourceManager resources = MinecraftClient.getInstance().getResourceManager(); + ResourceManager resources = Minecraft.getInstance().getResourceManager(); for (RenderPipeline pipeline : PIPELINES) { device.precompilePipeline(pipeline, (identifier, shaderType) -> { @@ -234,5 +234,6 @@ public static void precompile() { } } - private MeteorRenderPipelines() {} + private MeteorRenderPipelines() { + } } diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/Renderer2D.java b/src/main/java/meteordevelopment/meteorclient/renderer/Renderer2D.java index 444a6db3b2..856c287662 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/Renderer2D.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/Renderer2D.java @@ -9,8 +9,8 @@ import meteordevelopment.meteorclient.gui.renderer.packer.TextureRegion; import meteordevelopment.meteorclient.utils.PreInit; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gl.GpuSampler; +import net.minecraft.client.Minecraft; +import com.mojang.blaze3d.textures.GpuSampler; public class Renderer2D { public static Renderer2D COLOR; @@ -64,13 +64,13 @@ public void render(String samplerName, GpuTextureView samplerView, GpuSampler sa if (triangles.isBuilding()) triangles.end(); MeshRenderer.begin() - .attachments(MinecraftClient.getInstance().getFramebuffer()) + .attachments(Minecraft.getInstance().getFramebuffer()) .pipeline(MeteorRenderPipelines.UI_COLORED_LINES) .mesh(lines) .end(); MeshRenderer.begin() - .attachments(MinecraftClient.getInstance().getFramebuffer()) + .attachments(Minecraft.getInstance().getFramebuffer()) .pipeline(textured ? MeteorRenderPipelines.UI_TEXTURED : MeteorRenderPipelines.UI_COLORED) .mesh(triangles) .sampler(samplerName, samplerView, sampler) diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/Renderer3D.java b/src/main/java/meteordevelopment/meteorclient/renderer/Renderer3D.java index 84ac6b162a..7c2b200aa3 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/Renderer3D.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/Renderer3D.java @@ -8,10 +8,10 @@ import com.mojang.blaze3d.pipeline.RenderPipeline; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.world.Dir; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Box; +import net.minecraft.client.Minecraft; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.core.BlockPos; +import net.minecraft.world.phys.AABB; public class Renderer3D { public final MeshBuilder lines; @@ -31,15 +31,15 @@ public void begin() { triangles.begin(); } - public void render(MatrixStack matrices) { + public void render(PoseStack matrices) { MeshRenderer.begin() - .attachments(MinecraftClient.getInstance().getFramebuffer()) + .attachments(Minecraft.getInstance().getFramebuffer()) .pipeline(linesPipeline) .mesh(lines, matrices) .end(); MeshRenderer.begin() - .attachments(MinecraftClient.getInstance().getFramebuffer()) + .attachments(Minecraft.getInstance().getFramebuffer()) .pipeline(trianglesPipeline) .mesh(triangles, matrices) .end(); @@ -91,8 +91,7 @@ public void boxLines(double x1, double y1, double z1, double x2, double y2, doub lines.line(trb, trf); lines.line(tlb, trb); lines.line(tlf, trf); - } - else { + } else { // Bottom to top if (Dir.isNot(excludeDir, Dir.WEST) && Dir.isNot(excludeDir, Dir.NORTH)) lines.line(blb, tlb); if (Dir.isNot(excludeDir, Dir.WEST) && Dir.isNot(excludeDir, Dir.SOUTH)) lines.line(blf, tlf); @@ -204,8 +203,7 @@ public void boxSides(double x1, double y1, double z1, double x2, double y2, doub // Top triangles.quad(tlb, tlf, trf, trb); - } - else { + } else { // Bottom to top if (Dir.isNot(excludeDir, Dir.WEST)) triangles.quad(blb, blf, tlf, tlb); if (Dir.isNot(excludeDir, Dir.EAST)) triangles.quad(brb, trb, trf, brf); @@ -230,11 +228,13 @@ public void box(double x1, double y1, double z1, double x2, double y2, double z2 } public void box(BlockPos pos, Color sideColor, Color lineColor, ShapeMode mode, int excludeDir) { - if (mode.lines()) boxLines(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1, lineColor, excludeDir); - if (mode.sides()) boxSides(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1, sideColor, excludeDir); + if (mode.lines()) + boxLines(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1, lineColor, excludeDir); + if (mode.sides()) + boxSides(pos.getX(), pos.getY(), pos.getZ(), pos.getX() + 1, pos.getY() + 1, pos.getZ() + 1, sideColor, excludeDir); } - public void box(Box box, Color sideColor, Color lineColor, ShapeMode mode, int excludeDir) { + public void box(AABB box, Color sideColor, Color lineColor, ShapeMode mode, int excludeDir) { if (mode.lines()) boxLines(box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ, lineColor, excludeDir); if (mode.sides()) boxSides(box.minX, box.minY, box.minZ, box.maxX, box.maxY, box.maxZ, sideColor, excludeDir); } diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/Texture.java b/src/main/java/meteordevelopment/meteorclient/renderer/Texture.java index a45082ff7c..56fcfcd780 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/Texture.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/Texture.java @@ -10,8 +10,8 @@ import com.mojang.blaze3d.textures.AddressMode; import com.mojang.blaze3d.textures.FilterMode; import com.mojang.blaze3d.textures.TextureFormat; -import net.minecraft.client.texture.AbstractTexture; -import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.renderer.texture.AbstractTexture; +import com.mojang.blaze3d.platform.NativeImage; import org.jetbrains.annotations.NotNull; import org.lwjgl.BufferUtils; import org.lwjgl.stb.STBImage; diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java b/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java index 02ffe511db..656411047f 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/text/CustomTextRenderer.java @@ -9,7 +9,7 @@ import meteordevelopment.meteorclient.renderer.MeshRenderer; import meteordevelopment.meteorclient.renderer.MeteorRenderPipelines; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.MinecraftClient; +import net.minecraft.client.Minecraft; import java.io.IOException; import java.nio.ByteBuffer; @@ -53,8 +53,7 @@ public void begin(double scale, boolean scaleOnly, boolean big) { if (big) { this.font = fonts[fonts.length - 1]; - } - else { + } else { double scaleA = Math.floor(scale * 10) / 10; int scaleI; @@ -102,8 +101,7 @@ public double render(String text, double x, double y, Color color, boolean shado font.render(mesh, text, x, y, color, scale / 1.5); SHADOW_COLOR.a = preShadowA; - } - else { + } else { width = font.render(mesh, text, x, y, color, scale / 1.5); } @@ -124,7 +122,7 @@ public void end() { mesh.end(); MeshRenderer.begin() - .attachments(MinecraftClient.getInstance().getFramebuffer()) + .attachments(Minecraft.getInstance().getFramebuffer()) .pipeline(MeteorRenderPipelines.UI_TEXT) .mesh(mesh) .sampler("u_Texture", font.texture.getGlTextureView(), font.texture.getSampler()) diff --git a/src/main/java/meteordevelopment/meteorclient/renderer/text/VanillaTextRenderer.java b/src/main/java/meteordevelopment/meteorclient/renderer/text/VanillaTextRenderer.java index 05ebe6dce5..cd859951eb 100644 --- a/src/main/java/meteordevelopment/meteorclient/renderer/text/VanillaTextRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/renderer/text/VanillaTextRenderer.java @@ -7,11 +7,11 @@ import com.mojang.blaze3d.systems.RenderSystem; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.font.TextRenderer.TextLayerType; -import net.minecraft.client.render.LightmapTextureManager; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.util.BufferAllocator; -import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.gui.Font.DisplayMode; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import com.mojang.blaze3d.vertex.ByteBufferBuilder; +import com.mojang.blaze3d.vertex.PoseStack; import org.joml.Matrix4f; import org.joml.Matrix4fStack; @@ -20,10 +20,10 @@ public class VanillaTextRenderer implements TextRenderer { public static final VanillaTextRenderer INSTANCE = new VanillaTextRenderer(); - private final BufferAllocator buffer = new BufferAllocator(2048); - private final VertexConsumerProvider.Immediate immediate = VertexConsumerProvider.immediate(buffer); + private final ByteBufferBuilder buffer = new BufferAllocator(2048); + private final MultiBufferSource.BufferSource immediate = MultiBufferSource.immediate(buffer); - private final MatrixStack matrices = new MatrixStack(); + private final PoseStack matrices = new MatrixStack(); private final Matrix4f emptyMatrix = new Matrix4f(); public double scale = 2; @@ -80,7 +80,7 @@ public double render(String text, double x, double y, Color color, boolean shado matrix = matrices.peek().getPositionMatrix(); } - mc.textRenderer.draw(text, (float) (x / scale), (float) (y / scale), color.getPacked(), shadow, matrix, immediate, TextLayerType.NORMAL, 0, LightmapTextureManager.MAX_LIGHT_COORDINATE); + mc.textRenderer.draw(text, (float) (x / scale), (float) (y / scale), color.getPacked(), shadow, matrix, immediate, DisplayMode.NORMAL, 0, LightTexture.MAX_LIGHT_COORDINATE); double x2 = (x / scale) + mc.textRenderer.getWidth(text); if (scaleIndividually) matrices.pop(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/BlockDataSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/BlockDataSetting.java index 2fed41a45f..042c41373a 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/BlockDataSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/BlockDataSetting.java @@ -9,10 +9,10 @@ import meteordevelopment.meteorclient.utils.misc.ICopyable; import meteordevelopment.meteorclient.utils.misc.IGetter; import meteordevelopment.meteorclient.utils.misc.ISerializable; -import net.minecraft.block.Block; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.Block; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import java.util.HashMap; import java.util.Map; @@ -43,10 +43,10 @@ protected boolean isValueValid(Map value) { } @Override - protected NbtCompound save(NbtCompound tag) { - NbtCompound valueTag = new NbtCompound(); + protected CompoundTag save(CompoundTag tag) { + CompoundTag valueTag = new NbtCompound(); for (Block block : get().keySet()) { - valueTag.put(Registries.BLOCK.getId(block).toString(), get().get(block).toTag()); + valueTag.put(BuiltInRegistries.BLOCK.getId(block).toString(), get().get(block).toTag()); } tag.put("value", valueTag); @@ -54,12 +54,12 @@ protected NbtCompound save(NbtCompound tag) { } @Override - protected Map load(NbtCompound tag) { + protected Map load(CompoundTag tag) { get().clear(); - NbtCompound valueTag = tag.getCompoundOrEmpty("value"); + CompoundTag valueTag = tag.getCompoundOrEmpty("value"); for (String key : valueTag.getKeys()) { - get().put(Registries.BLOCK.get(Identifier.of(key)), defaultData.get().copy().fromTag(valueTag.getCompoundOrEmpty(key))); + get().put(BuiltInRegistries.BLOCK.get(Identifier.of(key)), defaultData.get().copy().fromTag(valueTag.getCompoundOrEmpty(key))); } return get(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/BlockListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/BlockListSetting.java index 5d49ac76dd..e92c0e7453 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/BlockListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/BlockListSetting.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.block.Block; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.Block; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import java.util.ArrayList; import java.util.Arrays; @@ -40,10 +40,11 @@ protected List parseImpl(String str) { try { for (String value : values) { - Block block = parseId(Registries.BLOCK, value); + Block block = parseId(BuiltInRegistries.BLOCK, value); if (block != null && (filter == null || filter.test(block))) blocks.add(block); } - } catch (Exception ignored) {} + } catch (Exception ignored) { + } return blocks; } @@ -55,14 +56,14 @@ protected boolean isValueValid(List value) { @Override public Iterable getIdentifierSuggestions() { - return Registries.BLOCK.getIds(); + return BuiltInRegistries.BLOCK.getIds(); } @Override - protected NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); + protected CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); for (Block block : get()) { - valueTag.add(NbtString.of(Registries.BLOCK.getId(block).toString())); + valueTag.add(StringTag.of(BuiltInRegistries.BLOCK.getId(block).toString())); } tag.put("value", valueTag); @@ -70,12 +71,12 @@ protected NbtCompound save(NbtCompound tag) { } @Override - protected List load(NbtCompound tag) { + protected List load(CompoundTag tag) { get().clear(); - NbtList valueTag = tag.getListOrEmpty("value"); - for (NbtElement tagI : valueTag) { - Block block = Registries.BLOCK.get(Identifier.of(tagI.asString().orElse(""))); + ListTag valueTag = tag.getListOrEmpty("value"); + for (Tag tagI : valueTag) { + Block block = BuiltInRegistries.BLOCK.get(Identifier.of(tagI.asString().orElse(""))); if (filter == null || filter.test(block)) get().add(block); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/BlockPosSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/BlockPosSetting.java index 1e82f01928..d2cefc0be9 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/BlockPosSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/BlockPosSetting.java @@ -5,8 +5,8 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.util.math.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.BlockPos; import java.util.List; import java.util.function.Consumer; @@ -24,8 +24,8 @@ protected BlockPos parseImpl(String str) { BlockPos bp = null; try { bp = new BlockPos(Integer.parseInt(values.get(0)), Integer.parseInt(values.get(1)), Integer.parseInt(values.get(2))); + } catch (NumberFormatException ignored) { } - catch (NumberFormatException ignored) {} return bp; } @@ -35,14 +35,14 @@ protected boolean isValueValid(BlockPos value) { } @Override - protected NbtCompound save(NbtCompound tag) { - tag.putIntArray("value", new int[] {value.getX(), value.getY(), value.getZ()}); + protected CompoundTag save(CompoundTag tag) { + tag.putIntArray("value", new int[]{value.getX(), value.getY(), value.getZ()}); return tag; } @Override - protected BlockPos load(NbtCompound tag) { + protected BlockPos load(CompoundTag tag) { if (tag.getIntArray("value").isPresent()) { int[] value = tag.getIntArray("value").get(); set(new BlockPos(value[0], value[1], value[2])); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/BlockSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/BlockSetting.java index 0700964b72..99ffad7dae 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/BlockSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/BlockSetting.java @@ -5,10 +5,10 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.block.Block; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.Block; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import java.util.function.Consumer; import java.util.function.Predicate; @@ -24,7 +24,7 @@ public BlockSetting(String name, String description, Block defaultValue, Consume @Override protected Block parseImpl(String str) { - return parseId(Registries.BLOCK, str); + return parseId(BuiltInRegistries.BLOCK, str); } @Override @@ -34,22 +34,22 @@ protected boolean isValueValid(Block value) { @Override public Iterable getIdentifierSuggestions() { - return Registries.BLOCK.getIds(); + return BuiltInRegistries.BLOCK.getIds(); } @Override - protected NbtCompound save(NbtCompound tag) { - tag.putString("value", Registries.BLOCK.getId(get()).toString()); + protected CompoundTag save(CompoundTag tag) { + tag.putString("value", BuiltInRegistries.BLOCK.getId(get()).toString()); return tag; } @Override - protected Block load(NbtCompound tag) { - value = Registries.BLOCK.get(Identifier.of(tag.getString("value", ""))); + protected Block load(CompoundTag tag) { + value = BuiltInRegistries.BLOCK.get(Identifier.of(tag.getString("value", ""))); if (filter != null && !filter.test(value)) { - for (Block block : Registries.BLOCK) { + for (Block block : BuiltInRegistries.BLOCK) { if (filter.test(block)) { value = block; break; diff --git a/src/main/java/meteordevelopment/meteorclient/settings/BoolSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/BoolSetting.java index b554923443..98fb452dae 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/BoolSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/BoolSetting.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import java.util.List; import java.util.function.Consumer; @@ -36,14 +36,14 @@ public List getSuggestions() { } @Override - public NbtCompound save(NbtCompound tag) { + public CompoundTag save(CompoundTag tag) { tag.putBoolean("value", get()); return tag; } @Override - public Boolean load(NbtCompound tag) { + public Boolean load(CompoundTag tag) { set(tag.getBoolean("value", false)); return get(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/ColorListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/ColorListSetting.java index 1726463c57..a3cecafacc 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/ColorListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/ColorListSetting.java @@ -7,8 +7,8 @@ import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import java.util.ArrayList; import java.util.List; @@ -48,18 +48,18 @@ protected void resetImpl() { } @Override - protected NbtCompound save(NbtCompound tag) { + protected CompoundTag save(CompoundTag tag) { tag.put("value", NbtUtils.listToTag(get())); return tag; } @Override - protected List load(NbtCompound tag) { + protected List load(CompoundTag tag) { get().clear(); - for (NbtElement e : tag.getListOrEmpty("value")) { - get().add(new SettingColor().fromTag((NbtCompound) e)); + for (Tag e : tag.getListOrEmpty("value")) { + get().add(new SettingColor().fromTag((CompoundTag) e)); } return get(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/ColorSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/ColorSetting.java index 930124b3ea..9d5ccd698f 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/ColorSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/ColorSetting.java @@ -7,7 +7,7 @@ import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import java.util.List; import java.util.function.Consumer; @@ -48,14 +48,14 @@ public List getSuggestions() { } @Override - protected NbtCompound save(NbtCompound tag) { + protected CompoundTag save(CompoundTag tag) { tag.put("value", get().toTag()); return tag; } @Override - public SettingColor load(NbtCompound tag) { + public SettingColor load(CompoundTag tag) { get().fromTag(tag.getCompoundOrEmpty("value")); return get(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/DoubleSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/DoubleSetting.java index 64b1e1705d..05e3b41188 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/DoubleSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/DoubleSetting.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import java.util.function.Consumer; @@ -43,14 +43,14 @@ protected boolean isValueValid(Double value) { } @Override - protected NbtCompound save(NbtCompound tag) { + protected CompoundTag save(CompoundTag tag) { tag.putDouble("value", get()); return tag; } @Override - public Double load(NbtCompound tag) { + public Double load(CompoundTag tag) { set(tag.getDouble("value", 0.0)); return get(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/EnchantmentListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/EnchantmentListSetting.java index e56565df17..4f6e47e124 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/EnchantmentListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/EnchantmentListSetting.java @@ -6,25 +6,25 @@ package meteordevelopment.meteorclient.settings; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; -import net.minecraft.client.MinecraftClient; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.Enchantments; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.util.Identifier; +import net.minecraft.client.Minecraft; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.Identifier; import java.lang.reflect.AccessFlag; import java.util.*; import java.util.function.Consumer; import java.util.stream.Collectors; -public class EnchantmentListSetting extends Setting>> { - public EnchantmentListSetting(String name, String description, Set> defaultValue, Consumer>> onChanged, Consumer>>> onModuleActivated, IVisible visible) { +public class EnchantmentListSetting extends Setting>> { + public EnchantmentListSetting(String name, String description, Set> defaultValue, Consumer>> onChanged, Consumer>>> onModuleActivated, IVisible visible) { super(name, description, defaultValue, onChanged, onModuleActivated, visible); } @@ -34,9 +34,9 @@ public void resetImpl() { } @Override - protected Set> parseImpl(String str) { + protected Set> parseImpl(String str) { String[] values = str.split(","); - Set> enchs = new ObjectOpenHashSet<>(values.length); + Set> enchs = new ObjectOpenHashSet<>(values.length); for (String value : values) { String name = value.trim(); @@ -45,29 +45,29 @@ protected Set> parseImpl(String str) { if (name.contains(":")) id = Identifier.of(name); else id = Identifier.ofVanilla(name); - enchs.add(RegistryKey.of(RegistryKeys.ENCHANTMENT, id)); + enchs.add(ResourceKey.of(Registries.ENCHANTMENT, id)); } return enchs; } @Override - protected boolean isValueValid(Set> value) { + protected boolean isValueValid(Set> value) { return true; } @Override public Iterable getIdentifierSuggestions() { - return Optional.ofNullable(MinecraftClient.getInstance().getNetworkHandler()) - .flatMap(networkHandler -> networkHandler.getRegistryManager().getOptional(RegistryKeys.ENCHANTMENT)) + return Optional.ofNullable(Minecraft.getInstance().getNetworkHandler()) + .flatMap(networkHandler -> networkHandler.getRegistryManager().getOptional(Registries.ENCHANTMENT)) .map(Registry::getIds).orElse(Set.of()); } @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); - for (RegistryKey ench : get()) { - valueTag.add(NbtString.of(ench.getValue().toString())); + public CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); + for (ResourceKey ench : get()) { + valueTag.add(StringTag.of(ench.getValue().toString())); } tag.put("value", valueTag); @@ -75,19 +75,19 @@ public NbtCompound save(NbtCompound tag) { } @Override - public Set> load(NbtCompound tag) { + public Set> load(CompoundTag tag) { get().clear(); - for (NbtElement tagI : tag.getListOrEmpty("value")) { - get().add(RegistryKey.of(RegistryKeys.ENCHANTMENT, Identifier.of(tagI.asString().orElse("")))); + for (Tag tagI : tag.getListOrEmpty("value")) { + get().add(ResourceKey.of(Registries.ENCHANTMENT, Identifier.of(tagI.asString().orElse("")))); } return get(); } @SuppressWarnings({"unchecked", "rawtypes"}) - public static class Builder extends SettingBuilder>, EnchantmentListSetting> { - private static final Set> VANILLA_DEFAULTS; + public static class Builder extends SettingBuilder>, EnchantmentListSetting> { + private static final Set> VANILLA_DEFAULTS; public Builder() { super(new ObjectOpenHashSet<>()); @@ -98,7 +98,7 @@ public Builder vanillaDefaults() { } @SafeVarargs - public final Builder defaultValue(RegistryKey... defaults) { + public final Builder defaultValue(ResourceKey... defaults) { return defaultValue(defaults != null ? new ObjectOpenHashSet<>(defaults) : new ObjectOpenHashSet<>()); } @@ -110,7 +110,7 @@ public EnchantmentListSetting build() { static { VANILLA_DEFAULTS = (Set) Arrays.stream(Enchantments.class.getDeclaredFields()) .filter(field -> field.accessFlags().containsAll(List.of(AccessFlag.PUBLIC, AccessFlag.STATIC, AccessFlag.FINAL))) - .filter(field -> field.getType() == RegistryKey.class) + .filter(field -> field.getType() == ResourceKey.class) .map(field -> { try { return field.get(null); @@ -118,8 +118,8 @@ public EnchantmentListSetting build() { return null; } }).filter(Objects::nonNull) - .map(RegistryKey.class::cast) - .filter(registryKey -> registryKey.getRegistryRef() == RegistryKeys.ENCHANTMENT) + .map(ResourceKey.class::cast) + .filter(registryKey -> registryKey.getRegistryRef() == Registries.ENCHANTMENT) .collect(Collectors.toSet()); } } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/EntityTypeListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/EntityTypeListSetting.java index b716b4c219..8883a9abb2 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/EntityTypeListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/EntityTypeListSetting.java @@ -7,14 +7,14 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import meteordevelopment.meteorclient.utils.entity.EntityUtils; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.SpawnGroup; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import java.util.ArrayList; import java.util.List; @@ -45,39 +45,40 @@ protected Set> parseImpl(String str) { try { for (String value : values) { - EntityType entity = parseId(Registries.ENTITY_TYPE, value); + EntityType entity = parseId(BuiltInRegistries.ENTITY_TYPE, value); if (entity != null) entities.add(entity); else { String lowerValue = value.trim().toLowerCase(); if (!groups.contains(lowerValue)) continue; - for (EntityType entityType : Registries.ENTITY_TYPE) { + for (EntityType entityType : BuiltInRegistries.ENTITY_TYPE) { if (filter != null && !filter.test(entityType)) continue; switch (lowerValue) { case "animal" -> { - if (entityType.getSpawnGroup() == SpawnGroup.CREATURE) entities.add(entityType); + if (entityType.getSpawnGroup() == MobCategory.CREATURE) entities.add(entityType); } case "wateranimal" -> { - if (entityType.getSpawnGroup() == SpawnGroup.WATER_AMBIENT - || entityType.getSpawnGroup() == SpawnGroup.WATER_CREATURE - || entityType.getSpawnGroup() == SpawnGroup.UNDERGROUND_WATER_CREATURE - || entityType.getSpawnGroup() == SpawnGroup.AXOLOTLS) entities.add(entityType); + if (entityType.getSpawnGroup() == MobCategory.WATER_AMBIENT + || entityType.getSpawnGroup() == MobCategory.WATER_CREATURE + || entityType.getSpawnGroup() == MobCategory.UNDERGROUND_WATER_CREATURE + || entityType.getSpawnGroup() == MobCategory.AXOLOTLS) entities.add(entityType); } case "monster" -> { - if (entityType.getSpawnGroup() == SpawnGroup.MONSTER) entities.add(entityType); + if (entityType.getSpawnGroup() == MobCategory.MONSTER) entities.add(entityType); } case "ambient" -> { - if (entityType.getSpawnGroup() == SpawnGroup.AMBIENT) entities.add(entityType); + if (entityType.getSpawnGroup() == MobCategory.AMBIENT) entities.add(entityType); } case "misc" -> { - if (entityType.getSpawnGroup() == SpawnGroup.MISC) entities.add(entityType); + if (entityType.getSpawnGroup() == MobCategory.MISC) entities.add(entityType); } } } } } - } catch (Exception ignored) {} + } catch (Exception ignored) { + } return entities; } @@ -91,8 +92,9 @@ protected boolean isValueValid(Set> value) { public List getSuggestions() { if (suggestions == null) { suggestions = new ArrayList<>(groups); - for (EntityType entityType : Registries.ENTITY_TYPE) { - if (filter == null || filter.test(entityType)) suggestions.add(Registries.ENTITY_TYPE.getId(entityType).toString()); + for (EntityType entityType : BuiltInRegistries.ENTITY_TYPE) { + if (filter == null || filter.test(entityType)) + suggestions.add(BuiltInRegistries.ENTITY_TYPE.getId(entityType).toString()); } } @@ -100,10 +102,10 @@ public List getSuggestions() { } @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); + public CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); for (EntityType entityType : get()) { - valueTag.add(NbtString.of(Registries.ENTITY_TYPE.getId(entityType).toString())); + valueTag.add(StringTag.of(BuiltInRegistries.ENTITY_TYPE.getId(entityType).toString())); } tag.put("value", valueTag); @@ -111,12 +113,12 @@ public NbtCompound save(NbtCompound tag) { } @Override - public Set> load(NbtCompound tag) { + public Set> load(CompoundTag tag) { get().clear(); - NbtList valueTag = tag.getListOrEmpty("value"); - for (NbtElement tagI : valueTag) { - EntityType type = Registries.ENTITY_TYPE.get(Identifier.of(tagI.asString().orElse(""))); + ListTag valueTag = tag.getListOrEmpty("value"); + for (Tag tagI : valueTag) { + EntityType type = BuiltInRegistries.ENTITY_TYPE.get(Identifier.of(tagI.asString().orElse(""))); if (filter == null || filter.test(type)) get().add(type); } @@ -139,7 +141,7 @@ public Builder onlyAttackable() { return this; } - public Builder filter(Predicate> filter){ + public Builder filter(Predicate> filter) { this.filter = filter; return this; } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/EnumSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/EnumSetting.java index fae07d2770..adf2706e21 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/EnumSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/EnumSetting.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import java.util.ArrayList; import java.util.List; @@ -45,14 +45,14 @@ public List getSuggestions() { } @Override - public NbtCompound save(NbtCompound tag) { + public CompoundTag save(CompoundTag tag) { tag.putString("value", get().toString()); return tag; } @Override - public T load(NbtCompound tag) { + public T load(CompoundTag tag) { parse(tag.getString("value", "")); return get(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/FontFaceSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/FontFaceSetting.java index 3ed272c878..ce68d79860 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/FontFaceSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/FontFaceSetting.java @@ -9,7 +9,7 @@ import meteordevelopment.meteorclient.renderer.text.FontFace; import meteordevelopment.meteorclient.renderer.text.FontFamily; import meteordevelopment.meteorclient.renderer.text.FontInfo; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import java.util.List; import java.util.function.Consumer; @@ -28,8 +28,7 @@ protected FontFace parseImpl(String str) { if (family.getName().replace(" ", "").equals(split[0])) { try { return family.get(FontInfo.Type.valueOf(split[1])); - } - catch (IllegalArgumentException ignored) { + } catch (IllegalArgumentException ignored) { return null; } } @@ -56,21 +55,20 @@ protected boolean isValueValid(FontFace value) { } @Override - protected NbtCompound save(NbtCompound tag) { + protected CompoundTag save(CompoundTag tag) { tag.putString("family", get().info.family()); tag.putString("type", get().info.type().toString()); return tag; } @Override - protected FontFace load(NbtCompound tag) { + protected FontFace load(CompoundTag tag) { String family = tag.getString("family", ""); FontInfo.Type type; try { type = FontInfo.Type.valueOf(tag.getString("type", "")); - } - catch (IllegalArgumentException ignored) { + } catch (IllegalArgumentException ignored) { set(Fonts.DEFAULT_FONT); return get(); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/GenericSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/GenericSetting.java index e36f819e15..8ee57b912e 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/GenericSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/GenericSetting.java @@ -7,7 +7,7 @@ import meteordevelopment.meteorclient.gui.GuiTheme; import meteordevelopment.meteorclient.gui.WidgetScreen; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import java.util.function.Consumer; @@ -37,14 +37,14 @@ protected boolean isValueValid(T value) { } @Override - public NbtCompound save(NbtCompound tag) { + public CompoundTag save(CompoundTag tag) { tag.put("value", get().toTag()); return tag; } @Override - public T load(NbtCompound tag) { + public T load(CompoundTag tag) { get().fromTag(tag.getCompoundOrEmpty("value")); return get(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/IBlockData.java b/src/main/java/meteordevelopment/meteorclient/settings/IBlockData.java index 6f752c0752..0925dca6ff 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/IBlockData.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/IBlockData.java @@ -10,7 +10,7 @@ import meteordevelopment.meteorclient.utils.misc.IChangeable; import meteordevelopment.meteorclient.utils.misc.ICopyable; import meteordevelopment.meteorclient.utils.misc.ISerializable; -import net.minecraft.block.Block; +import net.minecraft.world.level.block.Block; public interface IBlockData & ISerializable & IChangeable & IBlockData> { WidgetScreen createScreen(GuiTheme theme, Block block, BlockDataSetting setting); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/IntSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/IntSetting.java index ecef86d064..18cf56fdea 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/IntSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/IntSetting.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import java.util.function.Consumer; @@ -39,14 +39,14 @@ protected boolean isValueValid(Integer value) { } @Override - public NbtCompound save(NbtCompound tag) { + public CompoundTag save(CompoundTag tag) { tag.putInt("value", get()); return tag; } @Override - public Integer load(NbtCompound tag) { + public Integer load(CompoundTag tag) { set(tag.getInt("value", 0)); return get(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/ItemListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/ItemListSetting.java index 89da126639..27b7d2923f 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/ItemListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/ItemListSetting.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.item.Item; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.world.item.Item; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import java.util.ArrayList; import java.util.Arrays; @@ -37,10 +37,11 @@ protected List parseImpl(String str) { try { for (String value : values) { - Item item = parseId(Registries.ITEM, value); + Item item = parseId(BuiltInRegistries.ITEM, value); if (item != null && (filter == null || filter.test(item))) items.add(item); } - } catch (Exception ignored) {} + } catch (Exception ignored) { + } return items; } @@ -57,14 +58,15 @@ protected boolean isValueValid(List value) { @Override public Iterable getIdentifierSuggestions() { - return Registries.ITEM.getIds(); + return BuiltInRegistries.ITEM.getIds(); } @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); + public CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); for (Item item : get()) { - if (bypassFilterWhenSavingAndLoading || (filter == null || filter.test(item))) valueTag.add(NbtString.of(Registries.ITEM.getId(item).toString())); + if (bypassFilterWhenSavingAndLoading || (filter == null || filter.test(item))) + valueTag.add(StringTag.of(BuiltInRegistries.ITEM.getId(item).toString())); } tag.put("value", valueTag); @@ -72,12 +74,12 @@ public NbtCompound save(NbtCompound tag) { } @Override - public List load(NbtCompound tag) { + public List load(CompoundTag tag) { get().clear(); - NbtList valueTag = tag.getListOrEmpty("value"); - for (NbtElement tagI : valueTag) { - Item item = Registries.ITEM.get(Identifier.of(tagI.asString().orElse(""))); + ListTag valueTag = tag.getListOrEmpty("value"); + for (Tag tagI : valueTag) { + Item item = BuiltInRegistries.ITEM.get(Identifier.of(tagI.asString().orElse(""))); if (bypassFilterWhenSavingAndLoading || (filter == null || filter.test(item))) get().add(item); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/ItemSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/ItemSetting.java index 05e65c66a2..5f29622928 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/ItemSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/ItemSetting.java @@ -5,10 +5,10 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.item.Item; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.world.item.Item; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import java.util.function.Consumer; import java.util.function.Predicate; @@ -24,7 +24,7 @@ public ItemSetting(String name, String description, Item defaultValue, Consumer< @Override protected Item parseImpl(String str) { - return parseId(Registries.ITEM, str); + return parseId(BuiltInRegistries.ITEM, str); } @Override @@ -34,22 +34,22 @@ protected boolean isValueValid(Item value) { @Override public Iterable getIdentifierSuggestions() { - return Registries.ITEM.getIds(); + return BuiltInRegistries.ITEM.getIds(); } @Override - public NbtCompound save(NbtCompound tag) { - tag.putString("value", Registries.ITEM.getId(get()).toString()); + public CompoundTag save(CompoundTag tag) { + tag.putString("value", BuiltInRegistries.ITEM.getId(get()).toString()); return tag; } @Override - public Item load(NbtCompound tag) { - value = Registries.ITEM.get(Identifier.of(tag.getString("value",""))); + public Item load(CompoundTag tag) { + value = BuiltInRegistries.ITEM.get(Identifier.of(tag.getString("value", ""))); if (filter != null && !filter.test(value)) { - for (Item item : Registries.ITEM) { + for (Item item : BuiltInRegistries.ITEM) { if (filter.test(item)) { value = item; break; diff --git a/src/main/java/meteordevelopment/meteorclient/settings/KeybindSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/KeybindSetting.java index f0493cddfe..32ecddd9aa 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/KeybindSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/KeybindSetting.java @@ -13,7 +13,7 @@ import meteordevelopment.meteorclient.utils.misc.input.KeyAction; import meteordevelopment.orbit.EventHandler; import meteordevelopment.orbit.EventPriority; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import org.lwjgl.glfw.GLFW; import java.util.function.Consumer; @@ -33,12 +33,14 @@ public KeybindSetting(String name, String description, Keybind defaultValue, Con private void onKeyBinding(KeyEvent event) { if (widget == null) return; if (event.action == KeyAction.Press && event.key() == GLFW.GLFW_KEY_ESCAPE && widget.onClear()) event.cancel(); - else if (event.action == KeyAction.Release && widget.onAction(true, event.key(), event.modifiers())) event.cancel(); + else if (event.action == KeyAction.Release && widget.onAction(true, event.key(), event.modifiers())) + event.cancel(); } @EventHandler(priority = EventPriority.HIGHEST) private void onMouseClickBinding(MouseClickEvent event) { - if (event.action == KeyAction.Press && widget != null && widget.onAction(false, event.button(), 0)) event.cancel(); + if (event.action == KeyAction.Press && widget != null && widget.onAction(false, event.button(), 0)) + event.cancel(); } @EventHandler(priority = EventPriority.HIGH) @@ -78,14 +80,14 @@ protected boolean isValueValid(Keybind value) { } @Override - public NbtCompound save(NbtCompound tag) { + public CompoundTag save(CompoundTag tag) { tag.put("value", get().toTag()); return tag; } @Override - public Keybind load(NbtCompound tag) { + public Keybind load(CompoundTag tag) { get().fromTag(tag.getCompoundOrEmpty("value")); return get(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/ModuleListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/ModuleListSetting.java index 6000407ca4..10a619a625 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/ModuleListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/ModuleListSetting.java @@ -7,10 +7,10 @@ import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Modules; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; import java.util.ArrayList; import java.util.List; @@ -38,7 +38,8 @@ protected List parseImpl(String str) { Module module = Modules.get().get(value.trim()); if (module != null) modules.add(module); } - } catch (Exception ignored) {} + } catch (Exception ignored) { + } return modules; } @@ -59,20 +60,20 @@ public List getSuggestions() { } @Override - public NbtCompound save(NbtCompound tag) { - NbtList modulesTag = new NbtList(); - for (Module module : get()) modulesTag.add(NbtString.of(module.name)); + public CompoundTag save(CompoundTag tag) { + ListTag modulesTag = new NbtList(); + for (Module module : get()) modulesTag.add(StringTag.of(module.name)); tag.put("modules", modulesTag); return tag; } @Override - public List load(NbtCompound tag) { + public List load(CompoundTag tag) { get().clear(); - NbtList valueTag = tag.getListOrEmpty("modules"); - for (NbtElement tagI : valueTag) { + ListTag valueTag = tag.getListOrEmpty("modules"); + for (Tag tagI : valueTag) { Module module = Modules.get().get(tagI.asString().orElse("")); if (module != null) get().add(module); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/PacketListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/PacketListSetting.java index a0197e0f4f..422827da8a 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/PacketListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/PacketListSetting.java @@ -7,11 +7,11 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import meteordevelopment.meteorclient.utils.network.PacketUtils; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.network.packet.Packet; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.network.protocol.Packet; import java.util.ArrayList; import java.util.List; @@ -44,7 +44,8 @@ protected Set>> parseImpl(String str) { Class> packet = PacketUtils.getPacket(value.trim()); if (packet != null && (filter == null || filter.test(packet))) packets.add(packet); } - } catch (Exception ignored) {} + } catch (Exception ignored) { + } return packets; } @@ -72,10 +73,10 @@ public List getSuggestions() { } @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); + public CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); for (Class> packet : get()) { - valueTag.add(NbtString.of(PacketUtils.getName(packet))); + valueTag.add(StringTag.of(PacketUtils.getName(packet))); } tag.put("value", valueTag); @@ -83,12 +84,12 @@ public NbtCompound save(NbtCompound tag) { } @Override - public Set>> load(NbtCompound tag) { + public Set>> load(CompoundTag tag) { get().clear(); - NbtElement valueTag = tag.get("value"); - if (valueTag instanceof NbtList) { - for (NbtElement t : (NbtList) valueTag) { + Tag valueTag = tag.get("value"); + if (valueTag instanceof ListTag) { + for (Tag t : (ListTag) valueTag) { Class> packet = PacketUtils.getPacket(t.asString().orElse("")); if (packet != null && (filter == null || filter.test(packet))) get().add(packet); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/ParticleTypeListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/ParticleTypeListSetting.java index 6767344ede..b44437b9f5 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/ParticleTypeListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/ParticleTypeListSetting.java @@ -5,14 +5,14 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.particle.ParticleType; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.core.particles.ParticleOptions; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import java.util.ArrayList; import java.util.Arrays; @@ -36,10 +36,11 @@ protected List> parseImpl(String str) { try { for (String value : values) { - ParticleType particleType = parseId(Registries.PARTICLE_TYPE, value); - if (particleType instanceof ParticleEffect) particleTypes.add(particleType); + ParticleType particleType = parseId(BuiltInRegistries.PARTICLE_TYPE, value); + if (particleType instanceof ParticleOptions) particleTypes.add(particleType); } - } catch (Exception ignored) {} + } catch (Exception ignored) { + } return particleTypes; } @@ -51,15 +52,15 @@ protected boolean isValueValid(List> value) { @Override public Iterable getIdentifierSuggestions() { - return Registries.PARTICLE_TYPE.getIds(); + return BuiltInRegistries.PARTICLE_TYPE.getIds(); } @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); + public CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); for (ParticleType particleType : get()) { - Identifier id = Registries.PARTICLE_TYPE.getId(particleType); - if (id != null) valueTag.add(NbtString.of(id.toString())); + Identifier id = BuiltInRegistries.PARTICLE_TYPE.getId(particleType); + if (id != null) valueTag.add(StringTag.of(id.toString())); } tag.put("value", valueTag); @@ -67,12 +68,12 @@ public NbtCompound save(NbtCompound tag) { } @Override - public List> load(NbtCompound tag) { + public List> load(CompoundTag tag) { get().clear(); - NbtList valueTag = tag.getListOrEmpty("value"); - for (NbtElement tagI : valueTag) { - ParticleType particleType = Registries.PARTICLE_TYPE.get(Identifier.of(tagI.asString().orElse(""))); + ListTag valueTag = tag.getListOrEmpty("value"); + for (Tag tagI : valueTag) { + ParticleType particleType = BuiltInRegistries.PARTICLE_TYPE.get(Identifier.of(tagI.asString().orElse(""))); if (particleType != null) get().add(particleType); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/ScreenHandlerListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/ScreenHandlerListSetting.java index 1d597c604f..3e2a05871d 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/ScreenHandlerListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/ScreenHandlerListSetting.java @@ -5,21 +5,21 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.registry.Registries; -import net.minecraft.screen.ScreenHandlerType; -import net.minecraft.util.Identifier; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.resources.Identifier; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.Consumer; -public class ScreenHandlerListSetting extends Setting>> { - public ScreenHandlerListSetting(String name, String description, List> defaultValue, Consumer>> onChanged, Consumer>>> onModuleActivated, IVisible visible) { +public class ScreenHandlerListSetting extends Setting>> { + public ScreenHandlerListSetting(String name, String description, List> defaultValue, Consumer>> onChanged, Consumer>>> onModuleActivated, IVisible visible) { super(name, description, defaultValue, onChanged, onModuleActivated, visible); } @@ -29,13 +29,13 @@ public void resetImpl() { } @Override - protected List> parseImpl(String str) { + protected List> parseImpl(String str) { String[] values = str.split(","); - List> handlers = new ArrayList<>(values.length); + List> handlers = new ArrayList<>(values.length); try { for (String value : values) { - ScreenHandlerType handler = parseId(Registries.SCREEN_HANDLER, value); + MenuType handler = parseId(BuiltInRegistries.SCREEN_HANDLER, value); if (handler != null) handlers.add(handler); } } catch (Exception ignored) { @@ -45,21 +45,21 @@ protected List> parseImpl(String str) { } @Override - protected boolean isValueValid(List> value) { + protected boolean isValueValid(List> value) { return true; } @Override public Iterable getIdentifierSuggestions() { - return Registries.SCREEN_HANDLER.getIds(); + return BuiltInRegistries.SCREEN_HANDLER.getIds(); } @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); - for (ScreenHandlerType type : get()) { - Identifier id = Registries.SCREEN_HANDLER.getId(type); - if (id != null) valueTag.add(NbtString.of(id.toString())); + public CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); + for (MenuType type : get()) { + Identifier id = BuiltInRegistries.SCREEN_HANDLER.getId(type); + if (id != null) valueTag.add(StringTag.of(id.toString())); } tag.put("value", valueTag); @@ -67,24 +67,24 @@ public NbtCompound save(NbtCompound tag) { } @Override - public List> load(NbtCompound tag) { + public List> load(CompoundTag tag) { get().clear(); - NbtList valueTag = tag.getListOrEmpty("value"); - for (NbtElement tagI : valueTag) { - ScreenHandlerType type = Registries.SCREEN_HANDLER.get(Identifier.of(tagI.asString().orElse(""))); + ListTag valueTag = tag.getListOrEmpty("value"); + for (Tag tagI : valueTag) { + MenuType type = BuiltInRegistries.SCREEN_HANDLER.get(Identifier.of(tagI.asString().orElse(""))); if (type != null) get().add(type); } return get(); } - public static class Builder extends SettingBuilder>, ScreenHandlerListSetting> { + public static class Builder extends SettingBuilder>, ScreenHandlerListSetting> { public Builder() { super(new ArrayList<>(0)); } - public Builder defaultValue(ScreenHandlerType... defaults) { + public Builder defaultValue(MenuType... defaults) { return defaultValue(defaults != null ? Arrays.asList(defaults) : new ArrayList<>()); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/Setting.java b/src/main/java/meteordevelopment/meteorclient/settings/Setting.java index 443fe390fe..5f053abcf6 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/Setting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/Setting.java @@ -9,9 +9,9 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.IGetter; import meteordevelopment.meteorclient.utils.misc.ISerializable; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.registry.Registry; -import net.minecraft.util.Identifier; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.Registry; +import net.minecraft.resources.Identifier; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; @@ -112,11 +112,11 @@ public List getSuggestions() { return NO_SUGGESTIONS; } - protected abstract NbtCompound save(NbtCompound tag); + protected abstract CompoundTag save(CompoundTag tag); @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putString("name", name); save(tag); @@ -124,10 +124,10 @@ public NbtCompound toTag() { return tag; } - protected abstract T load(NbtCompound tag); + protected abstract T load(CompoundTag tag); @Override - public T fromTag(NbtCompound tag) { + public T fromTag(CompoundTag tag) { T value = load(tag); onChanged(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java b/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java index 49b4d121c9..e8036f3be0 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/SettingGroup.java @@ -6,9 +6,9 @@ package meteordevelopment.meteorclient.settings; import meteordevelopment.meteorclient.utils.misc.ISerializable; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -57,13 +57,13 @@ public boolean wasChanged() { } @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putString("name", name); tag.putBoolean("sectionExpanded", sectionExpanded); - NbtList settingsTag = new NbtList(); + ListTag settingsTag = new NbtList(); for (Setting setting : this) { if (setting.wasChanged()) settingsTag.add(setting.toTag()); } @@ -73,12 +73,12 @@ public NbtCompound toTag() { } @Override - public SettingGroup fromTag(NbtCompound tag) { + public SettingGroup fromTag(CompoundTag tag) { sectionExpanded = tag.getBoolean("sectionExpanded", false); - NbtList settingsTag = tag.getListOrEmpty("settings"); - for (NbtElement t : settingsTag) { - NbtCompound settingTag = (NbtCompound) t; + ListTag settingsTag = tag.getListOrEmpty("settings"); + for (Tag t : settingsTag) { + CompoundTag settingTag = (CompoundTag) t; Setting setting = get(settingTag.getString("name", "")); if (setting != null) setting.fromTag(settingTag); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java index 948a42d1ec..3135f430f4 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/Settings.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/Settings.java @@ -11,9 +11,9 @@ import meteordevelopment.meteorclient.utils.misc.ISerializable; import meteordevelopment.meteorclient.utils.render.color.RainbowColors; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -93,6 +93,7 @@ public SettingGroup createGroup(String name, boolean expanded) { groups.add(group); return group; } + public SettingGroup createGroup(String name) { return createGroup(name, true); } @@ -105,8 +106,7 @@ public void registerColorSettings(Module module) { if (setting instanceof ColorSetting) { RainbowColors.addSetting((Setting) setting); - } - else if (setting instanceof ColorListSetting) { + } else if (setting instanceof ColorListSetting) { RainbowColors.addSettingList((Setting>) setting); } } @@ -119,8 +119,7 @@ public void unregisterColorSettings() { for (Setting setting : group) { if (setting instanceof ColorSetting) { RainbowColors.removeSetting((Setting) setting); - } - else if (setting instanceof ColorListSetting) { + } else if (setting instanceof ColorListSetting) { RainbowColors.removeSettingList((Setting>) setting); } } @@ -155,10 +154,10 @@ public void tick(WContainer settings, GuiTheme theme) { } @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); - NbtList groupsTag = new NbtList(); + ListTag groupsTag = new NbtList(); for (SettingGroup group : groups) { if (group.wasChanged()) groupsTag.add(group.toTag()); } @@ -168,13 +167,13 @@ public NbtCompound toTag() { } @Override - public Settings fromTag(NbtCompound tag) { + public Settings fromTag(CompoundTag tag) { reset(); - NbtList groupsTag = tag.getListOrEmpty("groups"); + ListTag groupsTag = tag.getListOrEmpty("groups"); - for (NbtElement t : groupsTag) { - NbtCompound groupTag = (NbtCompound) t; + for (Tag t : groupsTag) { + CompoundTag groupTag = (CompoundTag) t; SettingGroup sg = getGroup(groupTag.getString("name", "")); if (sg != null) sg.fromTag(groupTag); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/SoundEventListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/SoundEventListSetting.java index f516843a4c..f8318bd6ad 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/SoundEventListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/SoundEventListSetting.java @@ -5,13 +5,13 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.registry.Registries; -import net.minecraft.sound.SoundEvent; -import net.minecraft.util.Identifier; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.resources.Identifier; import java.util.ArrayList; import java.util.Arrays; @@ -35,10 +35,11 @@ protected List parseImpl(String str) { try { for (String value : values) { - SoundEvent sound = parseId(Registries.SOUND_EVENT, value); + SoundEvent sound = parseId(BuiltInRegistries.SOUND_EVENT, value); if (sound != null) sounds.add(sound); } - } catch (Exception ignored) {} + } catch (Exception ignored) { + } return sounds; } @@ -50,15 +51,15 @@ protected boolean isValueValid(List value) { @Override public Iterable getIdentifierSuggestions() { - return Registries.SOUND_EVENT.getIds(); + return BuiltInRegistries.SOUND_EVENT.getIds(); } @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); + public CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); for (SoundEvent sound : get()) { - Identifier id = Registries.SOUND_EVENT.getId(sound); - if (id != null) valueTag.add(NbtString.of(id.toString())); + Identifier id = BuiltInRegistries.SOUND_EVENT.getId(sound); + if (id != null) valueTag.add(StringTag.of(id.toString())); } tag.put("value", valueTag); @@ -66,11 +67,11 @@ public NbtCompound save(NbtCompound tag) { } @Override - public List load(NbtCompound tag) { + public List load(CompoundTag tag) { get().clear(); - for (NbtElement tagI : tag.getListOrEmpty("value")) { - SoundEvent soundEvent = Registries.SOUND_EVENT.get(Identifier.of(tagI.asString().orElse(""))); + for (Tag tagI : tag.getListOrEmpty("value")) { + SoundEvent soundEvent = BuiltInRegistries.SOUND_EVENT.get(Identifier.of(tagI.asString().orElse(""))); if (soundEvent != null) get().add(soundEvent); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/StatusEffectAmplifierMapSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/StatusEffectAmplifierMapSetting.java index bfb06f5ea8..4377886e75 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/StatusEffectAmplifierMapSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/StatusEffectAmplifierMapSetting.java @@ -8,17 +8,17 @@ import it.unimi.dsi.fastutil.objects.Reference2IntArrayMap; import it.unimi.dsi.fastutil.objects.Reference2IntMap; import it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap; -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import java.util.function.Consumer; -public class StatusEffectAmplifierMapSetting extends Setting> { - public static final Reference2IntMap EMPTY_STATUS_EFFECT_MAP = createStatusEffectMap(); +public class StatusEffectAmplifierMapSetting extends Setting> { + public static final Reference2IntMap EMPTY_STATUS_EFFECT_MAP = createStatusEffectMap(); - public StatusEffectAmplifierMapSetting(String name, String description, Reference2IntMap defaultValue, Consumer> onChanged, Consumer>> onModuleActivated, IVisible visible) { + public StatusEffectAmplifierMapSetting(String name, String description, Reference2IntMap defaultValue, Consumer> onChanged, Consumer>> onModuleActivated, IVisible visible) { super(name, description, defaultValue, onChanged, onModuleActivated, visible); } @@ -28,34 +28,35 @@ public void resetImpl() { } @Override - protected Reference2IntMap parseImpl(String str) { + protected Reference2IntMap parseImpl(String str) { String[] values = str.split(","); - Reference2IntMap effects = new Reference2IntOpenHashMap<>(EMPTY_STATUS_EFFECT_MAP); + Reference2IntMap effects = new Reference2IntOpenHashMap<>(EMPTY_STATUS_EFFECT_MAP); try { for (String value : values) { String[] split = value.split(" "); - StatusEffect effect = parseId(Registries.STATUS_EFFECT, split[0]); + MobEffect effect = parseId(BuiltInRegistries.STATUS_EFFECT, split[0]); int level = Integer.parseInt(split[1]); effects.put(effect, level); } - } catch (Exception ignored) {} + } catch (Exception ignored) { + } return effects; } @Override - protected boolean isValueValid(Reference2IntMap value) { + protected boolean isValueValid(Reference2IntMap value) { return true; } @Override - public NbtCompound save(NbtCompound tag) { - NbtCompound valueTag = new NbtCompound(); - for (StatusEffect statusEffect : get().keySet()) { - Identifier id = Registries.STATUS_EFFECT.getId(statusEffect); + public CompoundTag save(CompoundTag tag) { + CompoundTag valueTag = new NbtCompound(); + for (MobEffect statusEffect : get().keySet()) { + Identifier id = BuiltInRegistries.STATUS_EFFECT.getId(statusEffect); if (id != null) valueTag.putInt(id.toString(), get().getInt(statusEffect)); } tag.put("value", valueTag); @@ -63,28 +64,28 @@ public NbtCompound save(NbtCompound tag) { return tag; } - private static Reference2IntMap createStatusEffectMap() { - Reference2IntMap map = new Reference2IntArrayMap<>(Registries.STATUS_EFFECT.getIds().size()); + private static Reference2IntMap createStatusEffectMap() { + Reference2IntMap map = new Reference2IntArrayMap<>(BuiltInRegistries.STATUS_EFFECT.getIds().size()); - Registries.STATUS_EFFECT.forEach(potion -> map.put(potion, 0)); + BuiltInRegistries.STATUS_EFFECT.forEach(potion -> map.put(potion, 0)); return map; } @Override - public Reference2IntMap load(NbtCompound tag) { + public Reference2IntMap load(CompoundTag tag) { get().clear(); - NbtCompound valueTag = tag.getCompoundOrEmpty("value"); + CompoundTag valueTag = tag.getCompoundOrEmpty("value"); for (String key : valueTag.getKeys()) { - StatusEffect statusEffect = Registries.STATUS_EFFECT.get(Identifier.of(key)); + MobEffect statusEffect = BuiltInRegistries.STATUS_EFFECT.get(Identifier.of(key)); if (statusEffect != null) get().put(statusEffect, valueTag.getInt(key, 0)); } return get(); } - public static class Builder extends SettingBuilder, StatusEffectAmplifierMapSetting> { + public static class Builder extends SettingBuilder, StatusEffectAmplifierMapSetting> { public Builder() { super(new Reference2IntOpenHashMap<>(0)); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/StatusEffectListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/StatusEffectListSetting.java index e4335ca2d8..7dd9279268 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/StatusEffectListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/StatusEffectListSetting.java @@ -5,21 +5,21 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.Identifier; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.Consumer; -public class StatusEffectListSetting extends Setting> { - public StatusEffectListSetting(String name, String description, List defaultValue, Consumer> onChanged, Consumer>> onModuleActivated, IVisible visible) { +public class StatusEffectListSetting extends Setting> { + public StatusEffectListSetting(String name, String description, List defaultValue, Consumer> onChanged, Consumer>> onModuleActivated, IVisible visible) { super(name, description, defaultValue, onChanged, onModuleActivated, visible); } @@ -29,37 +29,38 @@ public void resetImpl() { } @Override - protected List parseImpl(String str) { + protected List parseImpl(String str) { String[] values = str.split(","); - List effects = new ArrayList<>(values.length); + List effects = new ArrayList<>(values.length); try { for (String value : values) { - StatusEffect effect = parseId(Registries.STATUS_EFFECT, value); + MobEffect effect = parseId(BuiltInRegistries.STATUS_EFFECT, value); if (effect != null) effects.add(effect); } - } catch (Exception ignored) {} + } catch (Exception ignored) { + } return effects; } @Override - protected boolean isValueValid(List value) { + protected boolean isValueValid(List value) { return true; } @Override public Iterable getIdentifierSuggestions() { - return Registries.STATUS_EFFECT.getIds(); + return BuiltInRegistries.STATUS_EFFECT.getIds(); } @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); + public CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); - for (StatusEffect effect : get()) { - Identifier id = Registries.STATUS_EFFECT.getId(effect); - if (id != null) valueTag.add(NbtString.of(id.toString())); + for (MobEffect effect : get()) { + Identifier id = BuiltInRegistries.STATUS_EFFECT.getId(effect); + if (id != null) valueTag.add(StringTag.of(id.toString())); } tag.put("value", valueTag); @@ -67,23 +68,23 @@ public NbtCompound save(NbtCompound tag) { } @Override - public List load(NbtCompound tag) { + public List load(CompoundTag tag) { get().clear(); - for (NbtElement tagI : tag.getListOrEmpty("value")) { - StatusEffect effect = Registries.STATUS_EFFECT.get(Identifier.of(tagI.asString().orElse(""))); + for (Tag tagI : tag.getListOrEmpty("value")) { + MobEffect effect = BuiltInRegistries.STATUS_EFFECT.get(Identifier.of(tagI.asString().orElse(""))); if (effect != null) get().add(effect); } return get(); } - public static class Builder extends SettingBuilder, StatusEffectListSetting> { + public static class Builder extends SettingBuilder, StatusEffectListSetting> { public Builder() { super(new ArrayList<>(0)); } - public Builder defaultValue(StatusEffect... defaults) { + public Builder defaultValue(MobEffect... defaults) { return defaultValue(defaults != null ? Arrays.asList(defaults) : new ArrayList<>()); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/StorageBlockListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/StorageBlockListSetting.java index 8b35872aae..999865da77 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/StorageBlockListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/StorageBlockListSetting.java @@ -8,18 +8,18 @@ import com.mojang.serialization.Lifecycle; import it.unimi.dsi.fastutil.objects.ObjectIterators; import meteordevelopment.meteorclient.MeteorClient; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; -import net.minecraft.registry.Registries; -import net.minecraft.registry.Registry; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.SimpleRegistry; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.entry.RegistryEntryList; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.core.MappedRegistry; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.resources.Identifier; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -65,7 +65,7 @@ protected List> parseImpl(String str) { try { for (String value : values) { - BlockEntityType block = parseId(Registries.BLOCK_ENTITY_TYPE, value); + BlockEntityType block = parseId(BuiltInRegistries.BLOCK_ENTITY_TYPE, value); if (block != null) blocks.add(block); } } catch (Exception ignored) { @@ -81,15 +81,15 @@ protected boolean isValueValid(List> value) { @Override public Iterable getIdentifierSuggestions() { - return Registries.BLOCK_ENTITY_TYPE.getIds(); + return BuiltInRegistries.BLOCK_ENTITY_TYPE.getIds(); } @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); + public CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); for (BlockEntityType type : get()) { - Identifier id = Registries.BLOCK_ENTITY_TYPE.getId(type); - if (id != null) valueTag.add(NbtString.of(id.toString())); + Identifier id = BuiltInRegistries.BLOCK_ENTITY_TYPE.getId(type); + if (id != null) valueTag.add(StringTag.of(id.toString())); } tag.put("value", valueTag); @@ -97,12 +97,12 @@ public NbtCompound save(NbtCompound tag) { } @Override - public List> load(NbtCompound tag) { + public List> load(CompoundTag tag) { get().clear(); - NbtList valueTag = tag.getListOrEmpty("value"); - for (NbtElement tagI : valueTag) { - BlockEntityType type = Registries.BLOCK_ENTITY_TYPE.get(Identifier.of(tagI.asString().orElse(""))); + ListTag valueTag = tag.getListOrEmpty("value"); + for (Tag tagI : valueTag) { + BlockEntityType type = BuiltInRegistries.BLOCK_ENTITY_TYPE.get(Identifier.of(tagI.asString().orElse(""))); if (type != null) get().add(type); } @@ -124,9 +124,9 @@ public StorageBlockListSetting build() { } } - private static class SRegistry extends SimpleRegistry> { + private static class SRegistry extends MappedRegistry> { public SRegistry() { - super(RegistryKey.ofRegistry(MeteorClient.identifier("storage-blocks")), Lifecycle.stable()); + super(ResourceKey.ofRegistry(MeteorClient.identifier("storage-blocks")), Lifecycle.stable()); } @Override @@ -141,7 +141,7 @@ public Identifier getId(BlockEntityType entry) { } @Override - public Optional>> getKey(BlockEntityType entry) { + public Optional>> getKey(BlockEntityType entry) { return Optional.empty(); } @@ -152,7 +152,7 @@ public int getRawId(@Nullable BlockEntityType entry) { @Nullable @Override - public BlockEntityType get(@Nullable RegistryKey> key) { + public BlockEntityType get(@Nullable ResourceKey> key) { return null; } @@ -195,17 +195,17 @@ public Iterator> iterator() { } @Override - public boolean contains(RegistryKey> key) { + public boolean contains(ResourceKey> key) { return false; } @Override - public Set>, BlockEntityType>> getEntrySet() { + public Set>, BlockEntityType>> getEntrySet() { return null; } @Override - public Optional>> getRandom(net.minecraft.util.math.random.Random random) { + public Optional>> getRandom(net.minecraft.util.math.random.Random random) { return Optional.empty(); } @@ -215,32 +215,32 @@ public Registry> freeze() { } @Override - public RegistryEntry.Reference> createEntry(BlockEntityType value) { + public Holder.Reference> createEntry(BlockEntityType value) { return null; } @Override - public Optional>> getEntry(int rawId) { + public Optional>> getEntry(int rawId) { return Optional.empty(); } @Override - public Optional>> getEntry(Identifier id) { + public Optional>> getEntry(Identifier id) { return Optional.empty(); } @Override - public Stream>> streamEntries() { + public Stream>> streamEntries() { return null; } @Override - public Stream>> streamTags() { + public Stream>> streamTags() { return null; } @Override - public Set>> getKeys() { + public Set>> getKeys() { return null; } } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/StringListSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/StringListSetting.java index d5f03502cb..919239e0a5 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/StringListSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/StringListSetting.java @@ -12,17 +12,17 @@ import meteordevelopment.meteorclient.gui.widgets.input.WTextBox; import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; import meteordevelopment.meteorclient.gui.widgets.pressable.WMinus; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.function.Consumer; -public class StringListSetting extends Setting>{ +public class StringListSetting extends Setting> { public final Class renderer; public final CharFilter filter; @@ -44,10 +44,10 @@ protected boolean isValueValid(List value) { } @Override - public NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); + public CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); for (int i = 0; i < this.value.size(); i++) { - valueTag.add(i, NbtString.of(get().get(i))); + valueTag.add(i, StringTag.of(get().get(i))); } tag.put("value", valueTag); @@ -55,11 +55,11 @@ public NbtCompound save(NbtCompound tag) { } @Override - public List load(NbtCompound tag) { + public List load(CompoundTag tag) { get().clear(); - NbtList valueTag = tag.getListOrEmpty("value"); - for (NbtElement tagI : valueTag) { + ListTag valueTag = tag.getListOrEmpty("value"); + for (Tag tagI : valueTag) { get().add(tagI.asString().orElse("")); } diff --git a/src/main/java/meteordevelopment/meteorclient/settings/StringSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/StringSetting.java index e1d1777427..c09f522a3f 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/StringSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/StringSetting.java @@ -7,7 +7,7 @@ import meteordevelopment.meteorclient.gui.utils.CharFilter; import meteordevelopment.meteorclient.gui.widgets.input.WTextBox; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import java.util.function.Consumer; @@ -37,14 +37,14 @@ protected boolean isValueValid(String value) { } @Override - public NbtCompound save(NbtCompound tag) { + public CompoundTag save(CompoundTag tag) { tag.putString("value", get()); return tag; } @Override - public String load(NbtCompound tag) { + public String load(CompoundTag tag) { set(tag.getString("value", "")); return get(); diff --git a/src/main/java/meteordevelopment/meteorclient/settings/Vector3dSetting.java b/src/main/java/meteordevelopment/meteorclient/settings/Vector3dSetting.java index 4acb02c795..1713230982 100644 --- a/src/main/java/meteordevelopment/meteorclient/settings/Vector3dSetting.java +++ b/src/main/java/meteordevelopment/meteorclient/settings/Vector3dSetting.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.settings; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import org.joml.Vector3d; import java.util.function.Consumer; @@ -56,8 +56,8 @@ protected boolean isValueValid(Vector3d value) { } @Override - protected NbtCompound save(NbtCompound tag) { - NbtCompound valueTag = new NbtCompound(); + protected CompoundTag save(CompoundTag tag) { + CompoundTag valueTag = new NbtCompound(); valueTag.putDouble("x", get().x); valueTag.putDouble("y", get().y); valueTag.putDouble("z", get().z); @@ -68,10 +68,10 @@ protected NbtCompound save(NbtCompound tag) { } @Override - protected Vector3d load(NbtCompound tag) { + protected Vector3d load(CompoundTag tag) { if (tag.getCompound("value").isEmpty()) return get(); - NbtCompound valueTag = tag.getCompound("value").get(); + CompoundTag valueTag = tag.getCompound("value").get(); set(valueTag.getDouble("x", 0.0), valueTag.getDouble("y", 0.0), valueTag.getDouble("z", 0.0)); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/System.java b/src/main/java/meteordevelopment/meteorclient/systems/System.java index bdfd86255c..3e8b436a17 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/System.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/System.java @@ -8,9 +8,9 @@ import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.utils.files.StreamUtils; import meteordevelopment.meteorclient.utils.misc.ISerializable; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtIo; -import net.minecraft.util.crash.CrashException; +import net.minecraft.ReportedException; import org.apache.commons.io.FilenameUtils; import java.io.File; @@ -38,13 +38,14 @@ public System(String name) { } } - public void init() {} + public void init() { + } public void save(File folder) { File file = getFile(); if (file == null) return; - NbtCompound tag = toTag(); + CompoundTag tag = toTag(); if (tag == null) return; try { @@ -81,7 +82,7 @@ public void load(File folder) { if (file.exists()) { try { fromTag(NbtIo.read(file.toPath())); - } catch (CrashException e) { + } catch (ReportedException e) { String backupName = FilenameUtils.removeExtension(file.getName()) + "-" + ZonedDateTime.now().format(DATE_TIME_FORMATTER) + ".backup.nbt"; File backup = new File(file.getParentFile(), backupName); @@ -113,12 +114,12 @@ public String getName() { } @Override - public NbtCompound toTag() { + public CompoundTag toTag() { return null; } @Override - public T fromTag(NbtCompound tag) { + public T fromTag(CompoundTag tag) { return null; } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/accounts/Account.java b/src/main/java/meteordevelopment/meteorclient/systems/accounts/Account.java index 30c4734ce9..5957c78be5 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/accounts/Account.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/accounts/Account.java @@ -9,20 +9,20 @@ import com.mojang.authlib.yggdrasil.ServicesKeyType; import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService; import meteordevelopment.meteorclient.mixin.FileCacheAccessor; -import meteordevelopment.meteorclient.mixin.MinecraftClientAccessor; -import meteordevelopment.meteorclient.mixin.PlayerSkinProviderAccessor; +import meteordevelopment.meteorclient.mixin.MinecraftAccessor; +import meteordevelopment.meteorclient.mixin.SkinManagerAccessor; import meteordevelopment.meteorclient.utils.misc.ISerializable; import meteordevelopment.meteorclient.utils.misc.NbtException; -import net.minecraft.client.network.SocialInteractionsManager; -import net.minecraft.client.session.ProfileKeys; -import net.minecraft.client.session.Session; -import net.minecraft.client.session.report.AbuseReportContext; -import net.minecraft.client.session.report.ReporterEnvironment; -import net.minecraft.client.texture.PlayerSkinProvider; -import net.minecraft.client.texture.PlayerSkinTextureDownloader; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.network.encryption.SignatureVerifier; -import net.minecraft.util.ApiServices; +import net.minecraft.client.gui.screens.social.PlayerSocialManager; +import net.minecraft.client.multiplayer.ProfileKeyPairManager; +import net.minecraft.client.User; +import net.minecraft.client.multiplayer.chat.report.ReportingContext; +import net.minecraft.client.multiplayer.chat.report.ReportEnvironment; +import net.minecraft.client.resources.SkinManager; +import net.minecraft.client.renderer.texture.SkinTextureDownloader; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.SignatureValidator; +import net.minecraft.server.Services; import net.minecraft.util.Util; import java.nio.file.Path; @@ -64,32 +64,32 @@ public AccountCache getCache() { return cache; } - public static void setSession(Session session) { - MinecraftClientAccessor mca = (MinecraftClientAccessor) mc; - mca.meteor$setSession(session); + public static void setSession(User session) { + MinecraftAccessor mca = (MinecraftAccessor) mc; + mca.meteor$setUser(session); YggdrasilAuthenticationService yggdrasilAuthenticationService = new YggdrasilAuthenticationService(mc.getNetworkProxy()); UserApiService apiService = yggdrasilAuthenticationService.createUserApiService(session.getAccessToken()); mca.meteor$setUserApiService(apiService); - mca.meteor$setSocialInteractionsManager(new SocialInteractionsManager(mc, apiService)); - mca.meteor$setProfileKeys(ProfileKeys.create(apiService, session, mc.runDirectory.toPath())); - mca.meteor$setAbuseReportContext(AbuseReportContext.create(ReporterEnvironment.ofIntegratedServer(), apiService)); - mca.meteor$setGameProfileFuture(CompletableFuture.supplyAsync(() -> mc.getApiServices().sessionService().fetchProfile(mc.getSession().getUuidOrNull(), true), Util.getIoWorkerExecutor())); + mca.meteor$setPlayerSocialManager(new SocialInteractionsManager(mc, apiService)); + mca.meteor$setProfileKeyPairManager(ProfileKeyPairManager.create(apiService, session, mc.runDirectory.toPath())); + mca.meteor$setReportingContext(ReportingContext.create(ReportEnvironment.ofIntegratedServer(), apiService)); + mca.meteor$setProfileFuture(CompletableFuture.supplyAsync(() -> mc.getApiServices().sessionService().fetchProfile(mc.getSession().getUuidOrNull(), true), Util.getIoWorkerExecutor())); } public static void applyLoginEnvironment(YggdrasilAuthenticationService authService) { - MinecraftClientAccessor mca = (MinecraftClientAccessor) mc; - SignatureVerifier.create(authService.getServicesKeySet(), ServicesKeyType.PROFILE_KEY); - PlayerSkinProvider.FileCache skinCache = ((PlayerSkinProviderAccessor) mc.getSkinProvider()).meteor$getSkinCache(); - Path skinCachePath = ((FileCacheAccessor) skinCache).meteor$getDirectory(); - mca.meteor$setApiServices(ApiServices.create(authService, mc.runDirectory)); - mca.meteor$setSkinProvider(new PlayerSkinProvider(skinCachePath, mc.getApiServices(), new PlayerSkinTextureDownloader(mc.getNetworkProxy(), mc.getTextureManager(), mc), mc)); + MinecraftAccessor mca = (MinecraftAccessor) mc; + SignatureValidator.create(authService.getServicesKeySet(), ServicesKeyType.PROFILE_KEY); + SkinManager.TextureCache skinCache = ((SkinManagerAccessor) mc.getSkinProvider()).meteor$getSkinTextures(); + Path skinCachePath = ((FileCacheAccessor) skinCache).meteor$getRoot(); + mca.meteor$setServices(Services.create(authService, mc.runDirectory)); + mca.meteor$setSkinManager(new PlayerSkinProvider(skinCachePath, mc.getApiServices(), new PlayerSkinTextureDownloader(mc.getNetworkProxy(), mc.getTextureManager(), mc), mc)); } @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putString("type", type.name()); tag.putString("name", name); @@ -100,7 +100,7 @@ public NbtCompound toTag() { @SuppressWarnings("unchecked") @Override - public T fromTag(NbtCompound tag) { + public T fromTag(CompoundTag tag) { if (tag.getString("name").isEmpty() || tag.getCompound("cache").isEmpty()) throw new NbtException(); name = tag.getString("name").get(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/accounts/AccountCache.java b/src/main/java/meteordevelopment/meteorclient/systems/accounts/AccountCache.java index 66deaecd0f..35ccbad17b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/accounts/AccountCache.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/accounts/AccountCache.java @@ -11,7 +11,7 @@ import meteordevelopment.meteorclient.utils.misc.NbtException; import meteordevelopment.meteorclient.utils.render.PlayerHeadTexture; import meteordevelopment.meteorclient.utils.render.PlayerHeadUtils; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -51,8 +51,8 @@ public void loadHead(Runnable callback) { } @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putString("username", username); tag.putString("uuid", uuid); @@ -61,7 +61,7 @@ public NbtCompound toTag() { } @Override - public AccountCache fromTag(NbtCompound tag) { + public AccountCache fromTag(CompoundTag tag) { if (tag.getString("username").isEmpty() || tag.getString("uuid").isEmpty()) throw new NbtException(); username = tag.getString("username").get(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/accounts/Accounts.java b/src/main/java/meteordevelopment/meteorclient/systems/accounts/Accounts.java index eebb847db8..c78acffbb3 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/accounts/Accounts.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/accounts/Accounts.java @@ -14,7 +14,7 @@ import meteordevelopment.meteorclient.utils.misc.NbtException; import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.network.MeteorExecutor; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -57,8 +57,8 @@ public int size() { } @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.put("accounts", NbtUtils.listToTag(accounts)); @@ -66,19 +66,19 @@ public NbtCompound toTag() { } @Override - public Accounts fromTag(NbtCompound tag) { + public Accounts fromTag(CompoundTag tag) { MeteorExecutor.execute(() -> accounts = NbtUtils.listFromTag(tag.getListOrEmpty("accounts"), tag1 -> { - NbtCompound t = (NbtCompound) tag1; + CompoundTag t = (CompoundTag) tag1; if (!t.contains("type")) return null; AccountType type = AccountType.valueOf(t.getString("type", "")); try { return switch (type) { - case Cracked -> new CrackedAccount(null).fromTag(t); - case Microsoft -> new MicrosoftAccount(null).fromTag(t); + case Cracked -> new CrackedAccount(null).fromTag(t); + case Microsoft -> new MicrosoftAccount(null).fromTag(t); case TheAltening -> new TheAlteningAccount(null).fromTag(t); - case Session -> new SessionAccount(null).fromTag(t); + case Session -> new SessionAccount(null).fromTag(t); }; } catch (NbtException e) { return null; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/accounts/MicrosoftLogin.java b/src/main/java/meteordevelopment/meteorclient/systems/accounts/MicrosoftLogin.java index 364ff246cb..77ab9a91f5 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/accounts/MicrosoftLogin.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/accounts/MicrosoftLogin.java @@ -9,7 +9,7 @@ import com.sun.net.httpserver.HttpServer; import meteordevelopment.meteorclient.MeteorClient; import meteordevelopment.meteorclient.utils.network.Http; -import net.minecraft.util.Pair; +import net.minecraft.util.Tuple; import net.minecraft.util.Util; import java.io.IOException; @@ -32,7 +32,8 @@ public static class LoginData { public String newRefreshToken; public String uuid, username; - public LoginData() {} + public LoginData() { + } public LoginData(String mcToken, String newRefreshToken, String uuid, String username) { this.mcToken = mcToken; @@ -138,10 +139,10 @@ public static void stopServer() { private static void handleRequest(HttpExchange req) throws IOException { if (req.getRequestMethod().equals("GET")) { // Login - List> query = parseURL(req.getRequestURI().getRawQuery()); + List> query = parseURL(req.getRequestURI().getRawQuery()); boolean ok = false; - for (Pair pair : query) { + for (Tuple pair : query) { if (pair.getLeft().equals("code")) { handleCode(pair.getRight()); @@ -154,8 +155,7 @@ private static void handleRequest(HttpExchange req) throws IOException { if (!ok) { writeText(req, "Cannot authenticate."); callback.accept(null); - } - else writeText(req, "You may now close this page."); + } else writeText(req, "You may now close this page."); } stopServer(); @@ -179,8 +179,8 @@ private static void writeText(HttpExchange req, String text) throws IOException } // reimplementation of apache https URLEncodedUtils#parse - private static List> parseURL(String string) { - List> query = new ArrayList<>(); + private static List> parseURL(String string) { + List> query = new ArrayList<>(); char[] buf = string.toCharArray(); int i = 0; while (i < buf.length) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/CrackedAccount.java b/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/CrackedAccount.java index cb810bb8f4..3bac30d886 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/CrackedAccount.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/CrackedAccount.java @@ -7,8 +7,8 @@ import meteordevelopment.meteorclient.systems.accounts.Account; import meteordevelopment.meteorclient.systems.accounts.AccountType; -import net.minecraft.client.session.Session; -import net.minecraft.util.Uuids; +import net.minecraft.client.User; +import net.minecraft.core.UUIDUtil; import java.util.Optional; @@ -27,7 +27,7 @@ public boolean fetchInfo() { public boolean login() { super.login(); - setSession(new Session(name, Uuids.getOfflinePlayerUuid(name), "", Optional.empty(), Optional.empty())); + setSession(new Session(name, UUIDUtil.getOfflinePlayerUuid(name), "", Optional.empty(), Optional.empty())); return true; } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/MicrosoftAccount.java b/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/MicrosoftAccount.java index 4f6a308a43..32b240d3fc 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/MicrosoftAccount.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/MicrosoftAccount.java @@ -9,13 +9,14 @@ import meteordevelopment.meteorclient.systems.accounts.Account; import meteordevelopment.meteorclient.systems.accounts.AccountType; import meteordevelopment.meteorclient.systems.accounts.MicrosoftLogin; -import net.minecraft.client.session.Session; +import net.minecraft.client.User; import org.jetbrains.annotations.Nullable; import java.util.Optional; public class MicrosoftAccount extends Account { private @Nullable String token; + public MicrosoftAccount(String refreshToken) { super(AccountType.Microsoft, refreshToken); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/SessionAccount.java b/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/SessionAccount.java index e5917c7ce6..02bda50ea8 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/SessionAccount.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/SessionAccount.java @@ -11,8 +11,8 @@ import meteordevelopment.meteorclient.systems.accounts.AccountType; import meteordevelopment.meteorclient.systems.accounts.TokenAccount; import meteordevelopment.meteorclient.utils.network.Http; -import net.minecraft.client.session.Session; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.client.User; +import net.minecraft.nbt.CompoundTag; import java.util.Optional; @@ -25,7 +25,7 @@ public SessionAccount(String label) { } @Override - public SessionAccount fromTag(NbtCompound tag) { + public SessionAccount fromTag(CompoundTag tag) { super.fromTag(tag); accessToken = tag.getString("token", ""); @@ -33,8 +33,8 @@ public SessionAccount fromTag(NbtCompound tag) { } @Override - public NbtCompound toTag() { - NbtCompound tag = super.toTag(); + public CompoundTag toTag() { + CompoundTag tag = super.toTag(); tag.putString("token", accessToken); return tag; } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/TheAlteningAccount.java b/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/TheAlteningAccount.java index 663f63ff15..fdd32ec070 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/TheAlteningAccount.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/accounts/types/TheAlteningAccount.java @@ -14,8 +14,8 @@ import meteordevelopment.meteorclient.systems.accounts.AccountType; import meteordevelopment.meteorclient.systems.accounts.TokenAccount; import meteordevelopment.meteorclient.utils.misc.NbtException; -import net.minecraft.client.session.Session; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.client.User; +import net.minecraft.nbt.CompoundTag; import org.jetbrains.annotations.Nullable; import java.util.Optional; @@ -83,8 +83,8 @@ public String getToken() { } @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putString("type", type.name()); tag.putString("name", name); @@ -95,8 +95,9 @@ public NbtCompound toTag() { } @Override - public TheAlteningAccount fromTag(NbtCompound tag) { - if (tag.getString("name").isEmpty() || tag.getCompound("cache").isEmpty() || tag.getString("token").isEmpty()) throw new NbtException(); + public TheAlteningAccount fromTag(CompoundTag tag) { + if (tag.getString("name").isEmpty() || tag.getCompound("cache").isEmpty() || tag.getString("token").isEmpty()) + throw new NbtException(); name = tag.getString("name").get(); token = tag.getString("token").get(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java b/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java index f8deb6eff2..94749f6b9a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/config/Config.java @@ -13,10 +13,10 @@ import meteordevelopment.meteorclient.systems.Systems; import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtString; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.StringTag; import java.util.ArrayList; import java.util.List; @@ -177,8 +177,8 @@ public static Config get() { } @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putString("version", MeteorClient.VERSION.toString()); tag.put("settings", settings.toTag()); @@ -188,22 +188,22 @@ public NbtCompound toTag() { } @Override - public Config fromTag(NbtCompound tag) { + public Config fromTag(CompoundTag tag) { if (tag.contains("settings")) settings.fromTag(tag.getCompoundOrEmpty("settings")); if (tag.contains("dontShowAgainPrompts")) dontShowAgainPrompts = listFromTag(tag, "dontShowAgainPrompts"); return this; } - private NbtList listToTag(List list) { - NbtList nbt = new NbtList(); - for (String item : list) nbt.add(NbtString.of(item)); + private ListTag listToTag(List list) { + ListTag nbt = new NbtList(); + for (String item : list) nbt.add(StringTag.of(item)); return nbt; } - private List listFromTag(NbtCompound tag, String key) { + private List listFromTag(CompoundTag tag, String key) { List list = new ArrayList<>(); - for (NbtElement item : tag.getListOrEmpty(key)) list.add(item.asString().orElse("")); + for (Tag item : tag.getListOrEmpty(key)) list.add(item.asString().orElse("")); return list; } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/friends/Friend.java b/src/main/java/meteordevelopment/meteorclient/systems/friends/Friend.java index 12dea12812..f8fc3dda5d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/friends/Friend.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/friends/Friend.java @@ -12,8 +12,8 @@ import meteordevelopment.meteorclient.utils.network.Http; import meteordevelopment.meteorclient.utils.render.PlayerHeadTexture; import meteordevelopment.meteorclient.utils.render.PlayerHeadUtils; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.world.entity.player.Player; +import net.minecraft.nbt.CompoundTag; import org.jetbrains.annotations.NotNull; import javax.annotation.Nullable; @@ -35,9 +35,10 @@ public Friend(String name, @Nullable UUID id) { this.headTexture = null; } - public Friend(PlayerEntity player) { + public Friend(Player player) { this(player.getName().getString(), player.getUuid()); } + public Friend(String name) { this(name, null); } @@ -90,8 +91,8 @@ public boolean headTextureNeedsUpdate() { } @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putString("name", name); if (id != null) tag.putString("id", UndashedUuid.toString(id)); @@ -100,7 +101,7 @@ public NbtCompound toTag() { } @Override - public Friend fromTag(NbtCompound tag) { + public Friend fromTag(CompoundTag tag) { return this; } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/friends/Friends.java b/src/main/java/meteordevelopment/meteorclient/systems/friends/Friends.java index 36f363ab70..b2b2c67aee 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/friends/Friends.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/friends/Friends.java @@ -10,10 +10,10 @@ import meteordevelopment.meteorclient.systems.Systems; import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.network.MeteorExecutor; -import net.minecraft.client.network.PlayerListEntry; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; +import net.minecraft.client.multiplayer.PlayerInfo; +import net.minecraft.world.entity.player.Player; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -61,23 +61,23 @@ public Friend get(String name) { return null; } - public Friend get(PlayerEntity player) { + public Friend get(Player player) { return get(player.getName().getString()); } - public Friend get(PlayerListEntry player) { + public Friend get(PlayerInfo player) { return get(player.getProfile().name()); } - public boolean isFriend(PlayerEntity player) { + public boolean isFriend(Player player) { return player != null && get(player) != null; } - public boolean isFriend(PlayerListEntry player) { + public boolean isFriend(PlayerInfo player) { return get(player) != null; } - public boolean shouldAttack(PlayerEntity player) { + public boolean shouldAttack(Player player) { return !isFriend(player); } @@ -95,8 +95,8 @@ public boolean isEmpty() { } @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.put("friends", NbtUtils.listToTag(friends)); @@ -104,11 +104,11 @@ public NbtCompound toTag() { } @Override - public Friends fromTag(NbtCompound tag) { + public Friends fromTag(CompoundTag tag) { friends.clear(); - for (NbtElement itemTag : tag.getListOrEmpty("friends")) { - NbtCompound friendTag = (NbtCompound) itemTag; + for (Tag itemTag : tag.getListOrEmpty("friends")) { + CompoundTag friendTag = (CompoundTag) itemTag; if (!friendTag.contains("name")) continue; String name = friendTag.getString("name", ""); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java index c55e943fe2..1be4668469 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/Hud.java @@ -20,8 +20,8 @@ import meteordevelopment.meteorclient.utils.misc.NbtUtils; import meteordevelopment.meteorclient.utils.render.color.SettingColor; import meteordevelopment.orbit.EventHandler; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import org.jetbrains.annotations.NotNull; import java.util.*; @@ -274,8 +274,8 @@ public Iterator iterator() { // Serialization @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putInt("__version__", 1); @@ -287,7 +287,7 @@ public NbtCompound toTag() { } @Override - public Hud fromTag(NbtCompound tag) { + public Hud fromTag(CompoundTag tag) { if (!tag.contains("__version__")) { resetToDefaultElements(); return this; @@ -299,8 +299,8 @@ public Hud fromTag(NbtCompound tag) { // Elements elements.clear(); - for (NbtElement e : tag.getListOrEmpty("elements")) { - NbtCompound c = (NbtCompound) e; + for (Tag e : tag.getListOrEmpty("elements")) { + CompoundTag c = (CompoundTag) e; if (c.getString("name").isEmpty()) continue; HudElementInfo info = infos.get(c.getString("name").get()); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudBox.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudBox.java index f91e9f6d89..a7d952ee7c 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudBox.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudBox.java @@ -7,7 +7,7 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.ISerializable; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; public class HudBox implements ISerializable { private final HudElement element; @@ -137,8 +137,8 @@ public double alignX(double selfWidth, double width, Alignment alignment) { // Serialization @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putString("x-anchor", xAnchor.name()); tag.putString("y-anchor", yAnchor.name()); @@ -149,7 +149,7 @@ public NbtCompound toTag() { } @Override - public HudBox fromTag(NbtCompound tag) { + public HudBox fromTag(CompoundTag tag) { if (tag.getString("x-anchor").isPresent()) xAnchor = XAnchor.valueOf(tag.getString("x-anchor").get()); if (tag.getString("y-anchor").isPresent()) yAnchor = YAnchor.valueOf(tag.getString("y-anchor").get()); if (tag.getInt("x").isPresent()) x = tag.getInt("x").get(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudElement.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudElement.java index 1868e9c1d2..d14ef26baf 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudElement.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudElement.java @@ -12,7 +12,7 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.misc.ISerializable; import meteordevelopment.meteorclient.utils.other.Snapper; -import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.CompoundTag; public abstract class HudElement implements Snapper.Element, ISerializable { public final HudElementInfo info; @@ -48,8 +48,7 @@ public void setPos(int x, int y) { box.xAnchor = XAnchor.Left; box.yAnchor = YAnchor.Top; box.updateAnchors(); - } - else { + } else { box.setPos(box.x + (x - this.x), box.y + (y - this.y)); } @@ -99,11 +98,14 @@ public void remove() { Hud.get().remove(this); } - public void tick(HudRenderer renderer) {} + public void tick(HudRenderer renderer) { + } - public void render(HudRenderer renderer) {} + public void render(HudRenderer renderer) { + } - public void onFontChanged() {} + public void onFontChanged() { + } public WWidget getWidget(GuiTheme theme) { return null; @@ -112,8 +114,8 @@ public WWidget getWidget(GuiTheme theme) { // Serialization @Override - public NbtCompound toTag() { - NbtCompound tag = new NbtCompound(); + public CompoundTag toTag() { + CompoundTag tag = new NbtCompound(); tag.putString("name", info.name); tag.putBoolean("active", active); @@ -127,7 +129,7 @@ public NbtCompound toTag() { } @Override - public HudElement fromTag(NbtCompound tag) { + public HudElement fromTag(CompoundTag tag) { settings.reset(); tag.getBoolean("active").ifPresent(active1 -> active = active1); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java index ec8ea8a48d..c47ef0740f 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/HudRenderer.java @@ -21,11 +21,11 @@ import meteordevelopment.meteorclient.utils.render.RenderUtils; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.orbit.EventHandler; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.entity.state.LivingEntityRenderState; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Identifier; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.entity.state.LivingEntityRenderState; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.resources.Identifier; import org.joml.Quaternionf; import org.joml.Vector3f; @@ -56,14 +56,14 @@ public class HudRenderer { }) .build(CacheLoader.from(HudRenderer::loadFont)); - public DrawContext drawContext; + public GuiGraphics drawContext; public double delta; private HudRenderer() { MeteorClient.EVENT_BUS.subscribe(this); } - public void begin(DrawContext drawContext) { + public void begin(GuiGraphics drawContext) { Renderer2D.COLOR.begin(); this.drawContext = drawContext; @@ -92,16 +92,14 @@ public void end() { .mesh(fontHolder.getMesh()) .sampler("u_Texture", fontHolder.font.texture.getGlTextureView(), fontHolder.font.texture.getSampler()) .end(); - } - else { + } else { it.remove(); fontCache.put(fontHolder.font.getHeight(), fontHolder); } fontHolder.visited = false; } - } - else { + } else { VanillaTextRenderer.INSTANCE.end(); VanillaTextRenderer.INSTANCE.scaleIndividually = false; } @@ -159,13 +157,13 @@ public double text(String text, double x, double y, Color color, boolean shadow, font.render(mesh, text, x, y, color, scale); CustomTextRenderer.SHADOW_COLOR.a = preShadowA; - } - else { + } else { width = font.render(mesh, text, x, y, color, scale); } return width; } + public double text(String text, double x, double y, Color color, boolean shadow) { return text(text, x, y, color, shadow, -1); } @@ -181,12 +179,15 @@ public double textWidth(String text, boolean shadow, double scale) { VanillaTextRenderer.INSTANCE.scale = (scale == -1 ? hud.getTextScale() : scale) * 2; return VanillaTextRenderer.INSTANCE.getWidth(text, shadow); } + public double textWidth(String text, boolean shadow) { return textWidth(text, shadow, -1); } + public double textWidth(String text, double scale) { return textWidth(text, false, scale); } + public double textWidth(String text) { return textWidth(text, false, -1); } @@ -200,9 +201,11 @@ public double textHeight(boolean shadow, double scale) { VanillaTextRenderer.INSTANCE.scale = (scale == -1 ? hud.getTextScale() : scale) * 2; return VanillaTextRenderer.INSTANCE.getHeight(shadow); } + public double textHeight(boolean shadow) { return textHeight(shadow, -1); } + public double textHeight() { return textHeight(false, -1); } @@ -219,7 +222,7 @@ public void item(ItemStack itemStack, int x, int y, float scale, boolean overlay RenderUtils.drawItem(drawContext, itemStack, x, y, scale, overlay); } - public void entity(LivingEntity entity, int x, int y, int width, int height, float yaw, float pitch) { + public void entity(LivingEntity entity, int x, int y, int width, int height, float yaw, float pitch) { float previousBodyYaw = entity.bodyYaw; float previousYaw = entity.getYaw(); float previousPitch = entity.getPitch(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ArmorHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ArmorHud.java index a3bd7f6f01..7257d55541 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ArmorHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ArmorHud.java @@ -12,9 +12,9 @@ import meteordevelopment.meteorclient.systems.hud.HudElementInfo; import meteordevelopment.meteorclient.systems.hud.HudRenderer; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -167,7 +167,8 @@ public void render(HudRenderer renderer) { if (itemStack.isDamageable() && durability.get() != Durability.Bar && durability.get() != Durability.None) { String message = switch (durability.get()) { case Total -> Integer.toString(itemStack.getMaxDamage() - itemStack.getDamage()); - case Percentage -> Integer.toString(Math.round(((itemStack.getMaxDamage() - itemStack.getDamage()) * 100f) / (float) itemStack.getMaxDamage())); + case Percentage -> + Integer.toString(Math.round(((itemStack.getMaxDamage() - itemStack.getDamage()) * 100f) / (float) itemStack.getMaxDamage())); default -> "err"; }; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java index 2e2ffd1a42..794d34626b 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CombatHud.java @@ -25,19 +25,19 @@ import meteordevelopment.meteorclient.utils.player.PlayerUtils; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.component.type.ItemEnchantmentsComponent; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BedItem; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.registry.tag.EnchantmentTags; -import net.minecraft.registry.tag.ItemTags; -import net.minecraft.util.math.MathHelper; +import net.minecraft.world.item.enchantment.ItemEnchantments; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.BedItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.resources.ResourceKey; +import net.minecraft.core.Holder; +import net.minecraft.tags.EnchantmentTags; +import net.minecraft.tags.ItemTags; +import net.minecraft.util.Mth; import org.joml.Matrix4fStack; import java.util.ArrayList; @@ -96,7 +96,7 @@ public class CombatHud extends HudElement { // Enchantments - private final Setting>> displayedEnchantments = sgEnchantments.add(new EnchantmentListSetting.Builder() + private final Setting>> displayedEnchantments = sgEnchantments.add(new EnchantmentListSetting.Builder() .name("displayed-enchantments") .description("The enchantments that are shown on nametags.") .vanillaDefaults() @@ -214,7 +214,7 @@ public class CombatHud extends HudElement { .build() ); - private PlayerEntity playerEntity; + private Player playerEntity; public CombatHud() { super(INFO); @@ -263,7 +263,7 @@ public void render(HudRenderer renderer) { (int) (y + 10 * getScale()), (int) (50 * getScale()), (int) (60 * getScale()), - -MathHelper.wrapDegrees(playerEntity.lastYaw + (playerEntity.getYaw() - playerEntity.lastYaw) * mc.getRenderTickCounter().getTickProgress(true)), + -Mth.wrapDegrees(playerEntity.lastYaw + (playerEntity.getYaw() - playerEntity.lastYaw) * mc.getRenderTickCounter().getTickProgress(true)), -playerEntity.getPitch() ); @@ -388,16 +388,16 @@ public void render(HudRenderer renderer) { armorY = (y / getScale()) + 18; - ItemEnchantmentsComponent enchantments = EnchantmentHelper.getEnchantments(itemStack); - List>> enchantmentsToShow = new ArrayList<>(); + ItemEnchantments enchantments = EnchantmentHelper.getEnchantments(itemStack); + List>> enchantmentsToShow = new ArrayList<>(); - for (Object2IntMap.Entry> entry : enchantments.getEnchantmentEntries()) { + for (Object2IntMap.Entry> entry : enchantments.getEnchantmentEntries()) { if (entry.getKey().matches(displayedEnchantments.get()::contains)) { enchantmentsToShow.add(new ObjectIntImmutablePair<>(entry.getKey(), entry.getIntValue())); } } - for (ObjectIntPair> entry : enchantmentsToShow) { + for (ObjectIntPair> entry : enchantmentsToShow) { String enchantName = Utils.getEnchantSimpleName(entry.left(), 3) + " " + entry.rightInt(); double enchX = (((x / getScale()) + position * 20) + 8) - (TextRenderer.get().getWidth(enchantName) / 2); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CompassHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CompassHud.java index 684847d67c..74bea8bc19 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CompassHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/CompassHud.java @@ -11,7 +11,7 @@ import meteordevelopment.meteorclient.systems.hud.HudElementInfo; import meteordevelopment.meteorclient.systems.hud.HudRenderer; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.Mth; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -115,10 +115,10 @@ public void render(HudRenderer renderer) { double x = this.x + (getWidth() / 2.0); double y = this.y + (getHeight() / 2.0); - double pitch = isInEditor() ? 120 : MathHelper.clamp(mc.player.getPitch() + 30, -90, 90); + double pitch = isInEditor() ? 120 : Mth.clamp(mc.player.getPitch() + 30, -90, 90); pitch = Math.toRadians(pitch); - double yaw = isInEditor() ? 180 : MathHelper.wrapDegrees(mc.player.getYaw()); + double yaw = isInEditor() ? 180 : Mth.wrapDegrees(mc.player.getYaw()); yaw = Math.toRadians(yaw); for (Direction direction : Direction.values()) { diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/HoleHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/HoleHud.java index da963f4230..426630c6cc 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/HoleHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/HoleHud.java @@ -5,7 +5,7 @@ package meteordevelopment.meteorclient.systems.hud.elements; -import meteordevelopment.meteorclient.mixin.WorldRendererAccessor; +import meteordevelopment.meteorclient.mixin.LevelRendererAccessor; import meteordevelopment.meteorclient.settings.*; import meteordevelopment.meteorclient.systems.hud.Hud; import meteordevelopment.meteorclient.systems.hud.HudElement; @@ -13,10 +13,10 @@ import meteordevelopment.meteorclient.systems.hud.HudRenderer; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.util.math.Direction; -import net.minecraft.util.math.MathHelper; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.core.Direction; +import net.minecraft.util.Mth; import java.util.List; @@ -105,7 +105,7 @@ public void render(HudRenderer renderer) { private Direction get(Facing dir) { if (isInEditor()) return Direction.DOWN; - return Direction.fromHorizontalDegrees(MathHelper.wrapDegrees(mc.player.getYaw() + dir.offset)); + return Direction.fromHorizontalDegrees(Mth.wrapDegrees(mc.player.getYaw() + dir.offset)); } private void drawBlock(HudRenderer renderer, Direction dir, double x, double y) { @@ -116,7 +116,7 @@ private void drawBlock(HudRenderer renderer, Direction dir, double x, double y) if (dir == Direction.DOWN) return; - ((WorldRendererAccessor) mc.worldRenderer).meteor$getBlockBreakingInfos().values().forEach(info -> { + ((LevelRendererAccessor) mc.worldRenderer).meteor$getDestroyingBlocks().values().forEach(info -> { if (info.getPos().equals(mc.player.getBlockPos().offset(dir))) { renderBreaking(renderer, x, y, info.getStage() / 9f); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/InventoryHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/InventoryHud.java index c3fa452e10..d4be1bd7b5 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/InventoryHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/InventoryHud.java @@ -14,9 +14,9 @@ import meteordevelopment.meteorclient.utils.Utils; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Identifier; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.resources.Identifier; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -124,7 +124,8 @@ private void drawBackground(HudRenderer renderer, int x, int y, Color color) { int h = getHeight(); switch (background.get()) { - case Texture, Outline -> renderer.texture(background.get() == Background.Texture ? TEXTURE : TEXTURE_TRANSPARENT, x, y, w, h, color); + case Texture, Outline -> + renderer.texture(background.get() == Background.Texture ? TEXTURE : TEXTURE_TRANSPARENT, x, y, w, h, color); case Flat -> renderer.quad(x, y, w, h, color); } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ItemHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ItemHud.java index 975d8da941..88e146ae57 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ItemHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/ItemHud.java @@ -13,9 +13,9 @@ import meteordevelopment.meteorclient.utils.player.InvUtils; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; public class ItemHud extends HudElement { public static final HudElementInfo INFO = new HudElementInfo<>(Hud.GROUP, "item", "Displays the item count.", ItemHud::new); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/MapHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/MapHud.java index 8c997a2f6c..2ddc81a513 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/MapHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/MapHud.java @@ -15,12 +15,12 @@ import meteordevelopment.meteorclient.utils.player.FindItemResult; import meteordevelopment.meteorclient.utils.player.InvUtils; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.client.render.MapRenderState; -import net.minecraft.component.DataComponentTypes; -import net.minecraft.component.type.MapIdComponent; -import net.minecraft.item.FilledMapItem; -import net.minecraft.item.ItemStack; -import net.minecraft.item.map.MapState; +import net.minecraft.client.renderer.state.MapRenderState; +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.level.saveddata.maps.MapId; +import net.minecraft.world.item.MapItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.saveddata.maps.MapItemSavedData; import org.jetbrains.annotations.Nullable; import org.joml.Matrix3x2fStack; @@ -86,8 +86,8 @@ public class MapHud extends HudElement { ); private final MapRenderState renderState = new MapRenderState(); - private @Nullable MapIdComponent mapComponent; - private @Nullable MapState mapState; + private @Nullable MapId mapComponent; + private @Nullable MapItemSavedData mapState; public MapHud() { super(INFO); @@ -107,26 +107,26 @@ public void tick(HudRenderer renderer) { case SlotIndex -> mapStack = mc.player.getInventory().getStack(slotIndex.get()); case MapId -> { FindItemResult mapResult = InvUtils.find(stack -> { - MapIdComponent mapIdComponent = stack.get(DataComponentTypes.MAP_ID); + MapId mapIdComponent = stack.get(DataComponents.MAP_ID); return mapIdComponent != null && mapIdComponent.id() == mapId.get(); }); if (mapResult.found()) mapStack = mc.player.getInventory().getStack(mapResult.slot()); } case Simple -> { FindItemResult mapResult = InvUtils.find(stack -> { - MapIdComponent mapIdComponent = stack.get(DataComponentTypes.MAP_ID); + MapId mapIdComponent = stack.get(DataComponents.MAP_ID); return mapIdComponent != null; }); if (mapResult.found()) mapStack = mc.player.getInventory().getStack(mapResult.slot()); } } - if (mapStack.isEmpty() || !mapStack.contains(DataComponentTypes.MAP_ID)) { + if (mapStack.isEmpty() || !mapStack.contains(DataComponents.MAP_ID)) { mapComponent = null; mapState = null; } else { - mapComponent = mapStack.get(DataComponentTypes.MAP_ID); - mapState = FilledMapItem.getMapState(mapComponent, mc.world); + mapComponent = mapStack.get(DataComponents.MAP_ID); + mapState = MapItem.getMapState(mapComponent, mc.world); } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerModelHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerModelHud.java index 73814d21d9..d3ef773821 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerModelHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerModelHud.java @@ -12,8 +12,8 @@ import meteordevelopment.meteorclient.systems.hud.HudRenderer; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.math.MathHelper; +import net.minecraft.world.entity.player.Player; +import net.minecraft.util.Mth; import static meteordevelopment.meteorclient.MeteorClient.mc; @@ -113,11 +113,11 @@ public PlayerModelHud() { @Override public void render(HudRenderer renderer) { renderer.post(() -> { - PlayerEntity player = mc.player; + Player player = mc.player; if (player == null) return; float offsetYaw = centerOrientation.get() == CenterOrientation.North ? 180 : 0; - float yaw = copyYaw.get() ? MathHelper.wrapDegrees(player.lastYaw + (player.getYaw() - player.lastYaw) * mc.getRenderTickCounter().getTickProgress(true) + offsetYaw) : (float) customYaw.get(); + float yaw = copyYaw.get() ? Mth.wrapDegrees(player.lastYaw + (player.getYaw() - player.lastYaw) * mc.getRenderTickCounter().getTickProgress(true) + offsetYaw) : (float) customYaw.get(); float pitch = copyPitch.get() ? player.getPitch() : (float) customPitch.get(); renderer.entity(player, x, y, getWidth(), getHeight(), -yaw, -pitch); @@ -125,8 +125,7 @@ public void render(HudRenderer renderer) { if (background.get()) { renderer.quad(x, y, getWidth(), getHeight(), backgroundColor.get()); - } - else if (mc.player == null) { + } else if (mc.player == null) { renderer.quad(x, y, getWidth(), getHeight(), backgroundColor.get()); renderer.line(x, y, x + getWidth(), y + getHeight(), Color.GRAY); renderer.line(x + getWidth(), y, x, y + getHeight(), Color.GRAY); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerRadarHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerRadarHud.java index c2908620f3..9ea48d75a9 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerRadarHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PlayerRadarHud.java @@ -11,8 +11,8 @@ import meteordevelopment.meteorclient.utils.player.PlayerUtils; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.client.network.AbstractClientPlayerEntity; -import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.client.player.AbstractClientPlayer; +import net.minecraft.world.entity.player.Player; import java.util.ArrayList; import java.util.Comparator; @@ -123,7 +123,7 @@ public class PlayerRadarHud extends HudElement { .build() ); - private final List players = new ArrayList<>(); + private final List players = new ArrayList<>(); public PlayerRadarHud() { super(INFO); @@ -149,7 +149,7 @@ public void tick(HudRenderer renderer) { return; } - for (PlayerEntity entity : getPlayers()) { + for (AbstractClientPlayer entity : getPlayers()) { if (entity.equals(mc.player)) continue; if (!friends.get() && Friends.get().isFriend(entity)) continue; @@ -176,7 +176,7 @@ public void render(HudRenderer renderer) { if (mc.world == null) return; double spaceWidth = renderer.textWidth(" ", shadow.get(), getScale()); - for (PlayerEntity entity : getPlayers()) { + for (AbstractClientPlayer entity : getPlayers()) { if (entity.equals(mc.player)) continue; if (!friends.get() && Friends.get().isFriend(entity)) continue; @@ -196,11 +196,12 @@ public void render(HudRenderer renderer) { y += renderer.textHeight(shadow.get(), getScale()) + 2; x = renderer.text(text, x, y, color, shadow.get()); - if (distance.get()) renderer.text(distanceText, x + spaceWidth, y, secondaryColor.get(), shadow.get(), getScale()); + if (distance.get()) + renderer.text(distanceText, x + spaceWidth, y, secondaryColor.get(), shadow.get(), getScale()); } } - private List getPlayers() { + private List getPlayers() { players.clear(); players.addAll(mc.world.getPlayers()); if (players.size() > limit.get()) players.subList(limit.get() - 1, players.size() - 1).clear(); diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PotionTimersHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PotionTimersHud.java index 33101ee694..7eaff85051 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PotionTimersHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/PotionTimersHud.java @@ -12,9 +12,9 @@ import meteordevelopment.meteorclient.utils.misc.Names; import meteordevelopment.meteorclient.utils.render.color.Color; import meteordevelopment.meteorclient.utils.render.color.SettingColor; -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.entity.effect.StatusEffectUtil; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffectUtil; import java.util.ArrayList; import java.util.List; @@ -30,7 +30,7 @@ public class PotionTimersHud extends HudElement { // General - private final Setting> hiddenEffects = sgGeneral.add(new StatusEffectListSetting.Builder() + private final Setting> hiddenEffects = sgGeneral.add(new StatusEffectListSetting.Builder() .name("hidden-effects") .description("Which effects not to show in the list.") .build() @@ -155,7 +155,7 @@ public class PotionTimersHud extends HudElement { .build() ); - private final List> texts = new ArrayList<>(); + private final List> texts = new ArrayList<>(); private double rainbowHue; public PotionTimersHud() { @@ -184,7 +184,7 @@ public void tick(HudRenderer renderer) { texts.clear(); - for (StatusEffectInstance statusEffectInstance : mc.player.getStatusEffects()) { + for (MobEffectInstance statusEffectInstance : mc.player.getStatusEffects()) { if (hiddenEffects.get().contains(statusEffectInstance.getEffectType().value())) continue; if (!showAmbient.get() && statusEffectInstance.isAmbient()) continue; String text = getString(statusEffectInstance); @@ -216,7 +216,7 @@ public void render(HudRenderer renderer) { double localRainbowHue = rainbowHue; - for (Pair potionEffectEntry : texts) { + for (Pair potionEffectEntry : texts) { Color color = switch (colorMode.get()) { case Effect -> { int c = potionEffectEntry.left().getEffectType().value().getColor(); @@ -240,8 +240,8 @@ public void render(HudRenderer renderer) { } } - private String getString(StatusEffectInstance statusEffectInstance) { - return String.format("%s %d (%s)", Names.get(statusEffectInstance.getEffectType().value()), statusEffectInstance.getAmplifier() + 1, StatusEffectUtil.getDurationText(statusEffectInstance, 1, mc.world.getTickManager().getTickRate()).getString()); + private String getString(MobEffectInstance statusEffectInstance) { + return String.format("%s %d (%s)", Names.get(statusEffectInstance.getEffectType().value()), statusEffectInstance.getAmplifier() + 1, MobEffectUtil.getDurationText(statusEffectInstance, 1, mc.world.getTickManager().getTickRate()).getString()); } private double getScale() { @@ -249,7 +249,7 @@ private double getScale() { } private boolean hasNoVisibleEffects() { - for (StatusEffectInstance statusEffectInstance : mc.player.getStatusEffects()) { + for (MobEffectInstance statusEffectInstance : mc.player.getStatusEffects()) { if (hiddenEffects.get().contains(statusEffectInstance.getEffectType().value())) continue; if (!showAmbient.get() && statusEffectInstance.isAmbient()) continue; return false; diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/keyboard/KeyboardHud.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/keyboard/KeyboardHud.java index ce411d72ab..58c11e12a7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/keyboard/KeyboardHud.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/keyboard/KeyboardHud.java @@ -18,7 +18,7 @@ import meteordevelopment.meteorclient.gui.widgets.containers.WTable; import meteordevelopment.meteorclient.gui.widgets.pressable.WButton; import meteordevelopment.meteorclient.gui.widgets.pressable.WMinus; -import meteordevelopment.meteorclient.mixin.KeyBindingAccessor; +import meteordevelopment.meteorclient.mixin.KeyMappingAccessor; import meteordevelopment.meteorclient.settings.*; import meteordevelopment.meteorclient.systems.hud.Hud; import meteordevelopment.meteorclient.systems.hud.HudElement; @@ -31,13 +31,13 @@ import meteordevelopment.meteorclient.utils.render.color.SettingColor; import meteordevelopment.orbit.EventHandler; import meteordevelopment.orbit.EventPriority; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.option.KeyBinding; -import net.minecraft.client.util.InputUtil; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtList; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.client.KeyMapping; +import com.mojang.blaze3d.platform.InputConstants; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.nbt.ListTag; +import net.minecraft.util.Mth; import org.lwjgl.glfw.GLFW; import java.util.ArrayList; @@ -222,7 +222,7 @@ private Color getKeyColor(Key key, SettingColor out) { boolean pressed = key.isPressed; float target = pressed ? 1 : 0; - float tickDelta = MinecraftClient.getInstance().getRenderTickCounter().getDynamicDeltaTicks(); + float tickDelta = Minecraft.getInstance().getRenderTickCounter().getDynamicDeltaTicks(); float frameDelta = (float) (tickDelta / 20 / fadeTime.get()) * (pressed ? 1 : -1); key.delta = Math.clamp(key.delta + frameDelta, 0, 1); @@ -239,15 +239,15 @@ private Color getKeyColor(Key key, SettingColor out) { java.awt.Color.RGBtoHSB(c2.r, c2.g, c2.b, hsb1); int rgb = java.awt.Color.HSBtoRGB( - MathHelper.lerp(key.delta, hsb1[0], hsb2[0]), - MathHelper.lerp(key.delta, hsb1[1], hsb2[1]), - MathHelper.lerp(key.delta, hsb1[2], hsb2[2]) + Mth.lerp(key.delta, hsb1[0], hsb2[0]), + Mth.lerp(key.delta, hsb1[1], hsb2[1]), + Mth.lerp(key.delta, hsb1[2], hsb2[2]) ); out.r = Color.toRGBAR(rgb); out.g = Color.toRGBAG(rgb); out.b = Color.toRGBAB(rgb); - out.a = MathHelper.lerp(key.delta, pressedColor.get().a, unpressedColor.get().a); + out.a = Mth.lerp(key.delta, pressedColor.get().a, unpressedColor.get().a); } } else { out.set(key.isPressed ? pressedColor.get() : unpressedColor.get()); @@ -566,10 +566,10 @@ public void render(HudRenderer renderer) { double s = scale.get(); // because of a meteor bug, the modules search field swallows inputs - InputUtil.Key guiKey = ((KeyBindingAccessor) KeyBinds.OPEN_GUI).meteor$getKey(); + InputConstants.Key guiKey = ((KeyMappingAccessor) KeyBinds.OPEN_GUI).meteor$getKey(); for (Key key : keys) { - if (key.matches(guiKey.getCode(), guiKey.getCode(), guiKey.getCategory() != InputUtil.Type.MOUSE)) { + if (key.matches(guiKey.getCode(), guiKey.getCode(), guiKey.getCategory() != InputConstants.Type.MOUSE)) { if (key.isPressed != key.isNativelyPressed()) { key.update(key.isPressed ? KeyAction.Release : KeyAction.Press); } @@ -657,7 +657,7 @@ public enum KeyboardLayout { public static class Key { public String name = ""; - public KeyBinding binding; + public KeyMapping binding; public Keybind keybind; public double x, y, width, height; public boolean showCps = false; @@ -672,7 +672,7 @@ public Key() { this.height = 40; } - public Key(NbtCompound compound) { + public Key(CompoundTag compound) { this.keybind = Keybind.none().fromTag(compound.getCompoundOrEmpty("key")); this.name = compound.getString("name", ""); this.x = compound.getDouble("x", 0); @@ -682,7 +682,7 @@ public Key(NbtCompound compound) { this.showCps = compound.getBoolean("showCps", false); } - Key(KeyBinding binding, String name, double x, double y, double width, double height) { + Key(KeyMapping binding, String name, double x, double y, double width, double height) { this.binding = binding; this.name = name; this.x = x; @@ -716,9 +716,9 @@ public boolean matches(int input, int scancode, boolean key) { if (keybind != null) { return keybind.isKey() == key && keybind.getValue() == input; } else { - InputUtil.Key inputKey = ((KeyBindingAccessor) binding).meteor$getKey(); - boolean isKey = inputKey.getCategory() != InputUtil.Type.MOUSE; - return isKey == key && inputKey.getCategory() == InputUtil.Type.SCANCODE + InputConstants.Key inputKey = ((KeyMappingAccessor) binding).meteor$getKey(); + boolean isKey = inputKey.getCategory() != InputConstants.Type.MOUSE; + return isKey == key && inputKey.getCategory() == InputConstants.Type.SCANCODE ? scancode == inputKey.getCode() : input == inputKey.getCode(); } @@ -743,7 +743,7 @@ public boolean isNativelyPressed() { ? GLFW.glfwGetKey(window, keybind.getValue()) != GLFW.GLFW_RELEASE : GLFW.glfwGetMouseButton(window, keybind.getValue()) != GLFW.GLFW_RELEASE; } else { - int key = ((KeyBindingAccessor) binding).meteor$getKey().getCode(); + int key = ((KeyMappingAccessor) binding).meteor$getKey().getCode(); return key >= 0 && key < 8 ? GLFW.glfwGetMouseButton(window, key) != GLFW.GLFW_RELEASE : GLFW.glfwGetKey(window, key) != GLFW.GLFW_RELEASE; @@ -754,8 +754,8 @@ public int getCps() { return rollingCps.get(); } - public NbtCompound serialize() { - NbtCompound compound = new NbtCompound(); + public CompoundTag serialize() { + CompoundTag compound = new NbtCompound(); compound.put("key", keybind.toTag()); compound.putString("name", name); compound.putDouble("x", x); @@ -873,8 +873,8 @@ protected boolean isValueValid(List value) { } @Override - protected NbtCompound save(NbtCompound tag) { - NbtList valueTag = new NbtList(); + protected CompoundTag save(CompoundTag tag) { + ListTag valueTag = new NbtList(); for (Key key : get()) { valueTag.add(key.serialize()); } @@ -884,10 +884,10 @@ protected NbtCompound save(NbtCompound tag) { } @Override - protected List load(NbtCompound tag) { + protected List load(CompoundTag tag) { get().clear(); - for (NbtElement tagI : tag.getListOrEmpty("value")) { + for (Tag tagI : tag.getListOrEmpty("value")) { tagI.asCompound().ifPresent(nbtCompound -> get().add(new Key(nbtCompound))); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/keyboard/LayoutContext.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/keyboard/LayoutContext.java index 256388f06a..719d6380ca 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/keyboard/LayoutContext.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/elements/keyboard/LayoutContext.java @@ -7,7 +7,7 @@ import meteordevelopment.meteorclient.systems.hud.elements.keyboard.KeyboardHud.Key; import meteordevelopment.meteorclient.utils.misc.Keybind; -import net.minecraft.client.option.KeyBinding; +import net.minecraft.client.KeyMapping; final class LayoutContext { final double keyUnit; @@ -96,21 +96,21 @@ Key keyNamed(Keybind kb, String name, double x, double y, KeyDimensions w) { /** * Creates a standard 1u*1u key at the given position. */ - Key key(KeyBinding kb, double x, double y) { + Key key(KeyMapping kb, double x, double y) { return new Key(kb, null, x, y, px(KeyDimensions.STANDARD), px(KeyDimensions.STANDARD)); } /** * Creates a key with the given width and standard height. */ - Key key(KeyBinding kb, double x, double y, KeyDimensions w) { + Key key(KeyMapping kb, double x, double y, KeyDimensions w) { return new Key(kb, null, x, y, px(w), px(KeyDimensions.STANDARD)); } /** * Creates a named key with the given width and standard height. */ - Key key(KeyBinding kb, String name, double x, double y) { + Key key(KeyMapping kb, String name, double x, double y) { return new Key(kb, name, x, y, px(KeyDimensions.STANDARD), px(KeyDimensions.STANDARD)); } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/AddHudElementScreen.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/AddHudElementScreen.java index a837b8d9fd..768619a5ab 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/AddHudElementScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/AddHudElementScreen.java @@ -17,7 +17,7 @@ import meteordevelopment.meteorclient.systems.hud.HudElementInfo; import meteordevelopment.meteorclient.systems.hud.HudGroup; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.GuiGraphics; import java.util.ArrayList; import java.util.HashMap; @@ -63,10 +63,11 @@ public void initWidgets() { if (info.hasPresets() && !searchBar.get().isEmpty()) { for (HudElementInfo.Preset preset : info.presets) { String title = info.title + " - " + preset.title; - if (Utils.searchTextDefault(title, searchBar.get(), false)) grouped.computeIfAbsent(info.group, hudGroup -> new ArrayList<>()).add(new Item(title, info.description, preset)); + if (Utils.searchTextDefault(title, searchBar.get(), false)) + grouped.computeIfAbsent(info.group, hudGroup -> new ArrayList<>()).add(new Item(title, info.description, preset)); } - } - else if (Utils.searchTextDefault(info.title, searchBar.get(), false)) grouped.computeIfAbsent(info.group, hudGroup -> new ArrayList<>()).add(new Item(info.title, info.description, info)); + } else if (Utils.searchTextDefault(info.title, searchBar.get(), false)) + grouped.computeIfAbsent(info.group, hudGroup -> new ArrayList<>()).add(new Item(info.title, info.description, info)); } // Create widgets @@ -84,15 +85,13 @@ public void initWidgets() { add.action = () -> runObject(preset); if (firstObject == null) firstObject = preset; - } - else { + } else { HudElementInfo info = (HudElementInfo) item.object; if (info.hasPresets()) { WButton open = l.add(theme.button(" > ")).expandCellX().right().widget(); open.action = () -> runObject(info); - } - else { + } else { WPlus add = l.add(theme.plus()).expandCellX().right().widget(); add.action = () -> runObject(info); } @@ -108,8 +107,7 @@ private void runObject(Object object) { if (object instanceof HudElementInfo.Preset preset) { Hud.get().add(preset, x, y); close(); - } - else { + } else { HudElementInfo info = (HudElementInfo) object; if (info.hasPresets()) { @@ -117,8 +115,7 @@ private void runObject(Object object) { screen.parent = parent; mc.setScreen(screen); - } - else { + } else { Hud.get().add(info, x, y); close(); } @@ -126,9 +123,10 @@ private void runObject(Object object) { } @Override - protected void onRenderBefore(DrawContext drawContext, float delta) { + protected void onRenderBefore(GuiGraphics drawContext, float delta) { HudEditorScreen.renderElements(drawContext); } - private record Item(String title, String description, Object object) {} + private record Item(String title, String description, Object object) { + } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudEditorScreen.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudEditorScreen.java index d43f09fab3..0d082533b4 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudEditorScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudEditorScreen.java @@ -16,11 +16,11 @@ import meteordevelopment.meteorclient.utils.misc.input.Input; import meteordevelopment.meteorclient.utils.other.Snapper; import meteordevelopment.meteorclient.utils.render.color.Color; -import net.minecraft.client.gui.Click; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.input.KeyInput; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.util.Mth; import org.lwjgl.glfw.GLFW; import java.util.ArrayList; @@ -64,10 +64,11 @@ public HudEditorScreen(GuiTheme theme) { } @Override - public void initWidgets() {} + public void initWidgets() { + } @Override - public boolean mouseClicked(Click click, boolean doubled) { + public boolean mouseClicked(MouseButtonEvent click, boolean doubled) { double s = mc.getWindow().getScaleFactor(); double mouseX = click.x(); @@ -88,8 +89,7 @@ public boolean mouseClicked(Click click, boolean doubled) { selection.add(hovered); addedHoveredToSelectionWhenClickedElement = hovered; } - } - else selection.clear(); + } else selection.clear(); clickX = (int) mouseX; clickY = (int) mouseY; @@ -117,7 +117,7 @@ public void mouseMoved(double mouseX, double mouseY) { } @Override - public boolean mouseReleased(Click click) { + public boolean mouseReleased(MouseButtonEvent click) { double s = mc.getWindow().getScaleFactor(); double mouseX = click.x(); @@ -134,14 +134,12 @@ public boolean mouseReleased(Click click) { } if (moved) { - if (click.button() == GLFW.GLFW_MOUSE_BUTTON_LEFT && !dragging) fillSelection((int) mouseX, (int)mouseY); - } - else { + if (click.button() == GLFW.GLFW_MOUSE_BUTTON_LEFT && !dragging) fillSelection((int) mouseX, (int) mouseY); + } else { if (click.button() == GLFW.GLFW_MOUSE_BUTTON_LEFT) { HudElement hovered = getHovered((int) mouseX, (int) mouseY); if (hovered != null) hovered.toggle(); - } - else if (click.button() == GLFW.GLFW_MOUSE_BUTTON_RIGHT) { + } else if (click.button() == GLFW.GLFW_MOUSE_BUTTON_RIGHT) { HudElement hovered = getHovered((int) mouseX, (int) mouseY); if (hovered != null) mc.setScreen(new HudElementScreen(theme, hovered)); @@ -158,13 +156,12 @@ else if (click.button() == GLFW.GLFW_MOUSE_BUTTON_RIGHT) { } @Override - public boolean keyPressed(KeyInput input) { + public boolean keyPressed(KeyEvent input) { if (!pressed) { if (input.key() == GLFW.GLFW_KEY_ENTER || input.key() == GLFW.GLFW_KEY_KP_ENTER) { HudElement hovered = getHovered(lastMouseX, lastMouseY); if (hovered != null) hovered.toggle(); - } - else if (input.key() == GLFW.GLFW_KEY_DELETE) { + } else if (input.key() == GLFW.GLFW_KEY_DELETE) { HudElement hovered = getHovered(lastMouseX, lastMouseY); if (hovered != null) hovered.remove(); @@ -263,7 +260,8 @@ private void onRender(int mouseX, int mouseY) { private HudElement getHovered(int mouseX, int mouseY) { for (HudElement element : hud) { - if (mouseX >= element.x && mouseX <= element.x + element.getWidth() && mouseY >= element.y && mouseY <= element.y + element.getHeight()) return element; + if (mouseX >= element.x && mouseX <= element.x + element.getWidth() && mouseY >= element.y && mouseY <= element.y + element.getHeight()) + return element; } return null; @@ -283,7 +281,7 @@ private void renderElement(HudElement element, Color bgColor, Color olColor) { } @Override - public void render(DrawContext context, int mouseX, int mouseY, float delta) { + public void render(GuiGraphics context, int mouseX, int mouseY, float delta) { int s = mc.getWindow().getScaleFactor(); mouseX *= s; @@ -303,7 +301,7 @@ public void render(DrawContext context, int mouseX, int mouseY, float delta) { runAfterRenderTasks(); } - public static void renderElements(DrawContext drawContext) { + public static void renderElements(GuiGraphics drawContext) { Hud hud = Hud.get(); boolean inactiveOnly = Utils.canUpdate() && hud.active; @@ -314,8 +312,7 @@ public static void renderElements(DrawContext drawContext) { if (inactiveOnly) { if (!element.isActive()) element.render(HudRenderer.INSTANCE); - } - else element.render(HudRenderer.INSTANCE); + } else element.render(HudRenderer.INSTANCE); } HudRenderer.INSTANCE.end(); @@ -324,7 +321,7 @@ public static void renderElements(DrawContext drawContext) { private void renderSplitLines(boolean increment, double delta) { if (increment) splitLinesAnimation += delta * 6; else splitLinesAnimation -= delta * 6; - splitLinesAnimation = MathHelper.clamp(splitLinesAnimation, 0, 1); + splitLinesAnimation = Mth.clamp(splitLinesAnimation, 0, 1); Renderer2D renderer = Renderer2D.COLOR; renderer.begin(); @@ -434,8 +431,8 @@ public void move(int deltaX, int deltaY) { int lastY = y; int border = Hud.get().border.get(); - x = MathHelper.clamp(x + deltaX, border, Utils.getWindowWidth() - width - border); - y = MathHelper.clamp(y + deltaY, border, Utils.getWindowHeight() - height - border); + x = Mth.clamp(x + deltaX, border, Utils.getWindowWidth() - width - border); + y = Mth.clamp(y + deltaY, border, Utils.getWindowHeight() - height - border); for (HudElement element : selection) element.move(x - lastX, y - lastY); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementPresetsScreen.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementPresetsScreen.java index b963e699ac..1ef1c7155a 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementPresetsScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementPresetsScreen.java @@ -13,7 +13,7 @@ import meteordevelopment.meteorclient.systems.hud.Hud; import meteordevelopment.meteorclient.systems.hud.HudElementInfo; import meteordevelopment.meteorclient.utils.Utils; -import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.GuiGraphics; import org.jetbrains.annotations.Nullable; public class HudElementPresetsScreen extends WindowScreen { @@ -71,7 +71,7 @@ public void initWidgets() { } @Override - protected void onRenderBefore(DrawContext drawContext, float delta) { + protected void onRenderBefore(GuiGraphics drawContext, float delta) { HudEditorScreen.renderElements(drawContext); } } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java index 387b729678..6c2bc47633 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/hud/screens/HudElementScreen.java @@ -21,7 +21,7 @@ import meteordevelopment.meteorclient.systems.hud.XAnchor; import meteordevelopment.meteorclient.systems.hud.YAnchor; import meteordevelopment.meteorclient.utils.misc.NbtUtils; -import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.GuiGraphics; import static meteordevelopment.meteorclient.utils.Utils.getWindowWidth; @@ -129,7 +129,7 @@ public void tick() { } @Override - protected void onRenderBefore(DrawContext drawContext, float delta) { + protected void onRenderBefore(GuiGraphics drawContext, float delta) { HudEditorScreen.renderElements(drawContext); } diff --git a/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java b/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java index d1e04fca43..53a597305d 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/macros/Macro.java @@ -11,8 +11,8 @@ import meteordevelopment.meteorclient.utils.misc.Keybind; import meteordevelopment.meteorclient.utils.misc.MeteorStarscript; import meteordevelopment.meteorclient.utils.player.ChatUtils; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; import org.meteordev.starscript.Script; import java.util.ArrayList; @@ -49,9 +49,11 @@ public class Macro implements ISerializable { private final List