From a50dc89f2f57582e44a43f1f4163b261cea76ca7 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Sat, 25 Nov 2023 22:30:16 +0100 Subject: [PATCH] Recoded and improved even more :tm: - Added former contributor to author list as well - Cleanup block changes from RaphiMC's last commit - Fixed some block related issues - Conditionally load IP-Next compat mixin - Made all Mixins abstract and methods private This commit is the initial commit to clean up some fundamental issues of VFP since its release: - Actually start with having a package structure to group mixins - Don't over-engineer debug/information system but keep it simple as it's only debugging - Renamed definition package to fixes to address its purpose - Start with creating proper packages for fixes - Start with documenting the source code tree so new contributors understand what we're doing --- .github/DEVELOPER_API.md | 2 +- build.gradle | 16 +-- .../viafabricplus/ViaFabricPlus.java | 41 +++---- ...nCallback.java => DisconnectCallback.java} | 6 +- ...allback.java => PostGameLoadCallback.java} | 10 +- .../BoatRenderer_1_8.java | 6 +- .../ClientPlayerInteractionManager1_18_2.java | 6 +- .../ClientsideFixes.java | 18 +-- .../EntityHeightOffsetsPre1_20_2.java | 2 +- .../{definition => fixes}/RecipesPre1_12.java | 2 +- .../TripleChestHandler1_13_2.java | 4 +- .../account/BedrockAccountHandler.java | 2 +- .../account/ClassiCubeAccountHandler.java | 6 +- .../classic/ClassicWorldHeightInjection.java | 2 +- .../CustomClassicProtocolExtensions.java | 4 +- .../classic/command/ClassicViaSubCommand.java | 4 +- .../command/impl/ListExtensionsCommand.java | 4 +- .../classic/command/impl/SetTimeCommand.java | 4 +- .../screen/ClassicItemSelectionScreen.java | 10 +- .../model/BoatModel_1_8.java | 4 +- .../model/BuiltinEmptyGlyph1_12_2.java | 2 +- .../model/KeyPairResponse1_19_0.java | 2 +- .../tracker/JoinGameTracker.java | 2 +- .../tracker/TeleportTracker.java | 2 +- .../tracker/WolfHealthTracker.java | 4 +- .../information/AbstractInformationGroup.java | 56 --------- .../information/InformationSystem.java | 53 --------- .../information/impl/BedrockInformation.java | 112 ------------------ .../information/impl/C0_30CPEInformation.java | 40 ------- .../information/impl/GeneralInformation.java | 40 ------- .../information/impl/V1_1Information.java | 43 ------- .../information/impl/V1_2_4_5Information.java | 43 ------- .../information/impl/V1_5_2Information.java | 43 ------- .../information/impl/V1_7_10Information.java | 43 ------- .../{MixinPlugin.java => VFPMixinPlugin.java} | 19 ++- .../injection/access/IClientConnection.java | 4 +- .../injection/access/IKeyPairResponse.java | 29 ----- ...a.java => ILegacyKeySignatureStorage.java} | 7 +- .../injection/mixin/base/MixinMain.java | 7 +- .../{ => connect}/MixinClientConnection.java | 64 ++++++---- .../MixinClientConnection_1.java | 4 +- .../MixinClientLoginNetworkHandler.java | 8 +- .../MixinAddServerScreen.java | 26 ++-- .../base/{ => integration}/MixinDebugHud.java | 28 +---- ...nloadingTerrainScreenAndConnectScreen.java | 33 ++++-- .../MixinMinecraftClient.java | 10 +- .../MixinMultiplayerScreen.java | 23 ++-- .../MixinMultiplayerServerListPinger_1.java | 18 ++- ...ltiplayerServerListWidget_ServerEntry.java | 25 ++-- .../MixinConnectScreen_1.java | 7 +- .../MixinMultiplayerServerListPinger.java | 6 +- .../MixinPerformanceLog.java | 2 +- .../MixinServerInfo.java | 12 +- .../MixinCCAuthenticationResponse.java | 8 +- .../classic4j}/MixinTextFieldWidget.java | 15 ++- ...ixinAutoRefillHandler_ItemSlotMonitor.java | 2 +- .../jsonwebtoken/MixinClasses.java | 4 +- .../MixinDefaultJwtParserBuilder.java | 4 +- .../fixes/authlib/MixinKeyPairResponse.java | 12 +- .../authlib/MixinYggdrasilUserApiService.java | 27 +++-- .../MixinClientPlayerInteractionManager.java | 17 +-- .../fixes/minecraft/MixinDrawContext.java | 5 +- .../fixes/minecraft/MixinFontStorage.java | 12 +- .../fixes/minecraft/MixinMinecraftClient.java | 12 +- .../minecraft/MixinPendingUpdateManager.java | 5 +- .../minecraft/MixinPlayerEntityRenderer.java | 3 +- .../MixinPlayerPublicKey_PublicKeyData.java | 17 ++- .../fixes/minecraft/MixinProfileKeysImpl.java | 8 +- .../MixinServerResourcePackProvider.java | 9 +- .../fixes/minecraft/MixinStringHelper.java | 5 +- .../fixes/minecraft/MixinTextRenderer.java | 7 +- .../minecraft/block/MixinAbstractBlock.java | 5 +- ...MixinAbstractBlock_AbstractBlockState.java | 3 +- .../block/MixinAbstractSignBlock.java | 12 +- .../minecraft/block/MixinAnvilBlock.java | 12 +- .../minecraft/block/MixinBambooBlock.java | 5 +- .../fixes/minecraft/block/MixinBedBlock.java | 9 +- .../block/MixinBrewingStandBlock.java | 11 +- .../minecraft/block/MixinCarpetBlock.java | 2 +- .../minecraft/block/MixinCauldronBlock.java | 3 +- .../minecraft/block/MixinChestBlock.java | 5 +- .../fixes/minecraft/block/MixinCropBlock.java | 7 +- .../minecraft/block/MixinEndPortalBlock.java | 6 +- .../block/MixinEndPortalFrameBlock.java | 6 +- .../minecraft/block/MixinEnderChestBlock.java | 2 +- .../minecraft/block/MixinFarmlandBlock.java | 4 +- .../minecraft/block/MixinFenceBlock.java | 75 ++++++------ .../minecraft/block/MixinFenceGateBlock.java | 15 +-- .../fixes/minecraft/block/MixinFireBlock.java | 5 +- .../minecraft/block/MixinFlowerPotBlock.java | 5 +- .../minecraft/block/MixinFlowerbedBlock.java | 7 +- .../minecraft/block/MixinHopperBlock.java | 10 +- .../minecraft/block/MixinLadderBlock.java | 13 +- .../minecraft/block/MixinLilyPadBlock.java | 7 +- .../fixes/minecraft/block/MixinPaneBlock.java | 78 ++++++------ .../minecraft/block/MixinPistonBlock.java | 7 +- .../minecraft/block/MixinPistonHeadBlock.java | 26 ++-- .../fixes/minecraft/block/MixinSnowBlock.java | 26 ++-- .../fixes/minecraft/block/MixinWallBlock.java | 65 +++++----- .../minecraft/entity/MixinAnimalEntity.java | 5 +- .../entity/MixinBipedEntityModel.java | 5 +- .../minecraft/entity/MixinCamelEntity.java | 5 +- .../entity/MixinClientPlayerEntity.java | 40 +++---- .../minecraft/entity/MixinCowEntity.java | 3 +- .../minecraft/entity/MixinCreeperEntity.java | 5 +- .../fixes/minecraft/entity/MixinEntity.java | 24 ++-- .../minecraft/entity/MixinEntityIndex.java | 3 +- .../minecraft/entity/MixinEntityModels.java | 5 +- .../entity/MixinEntityPredicates.java | 3 +- .../entity/MixinEntityRenderDispatcher.java | 5 +- .../minecraft/entity/MixinItemEntity.java | 5 +- .../minecraft/entity/MixinLivingEntity.java | 18 +-- .../MixinLockableContainerBlockEntity.java | 5 +- .../entity/MixinOtherClientPlayerEntity.java | 5 +- .../minecraft/entity/MixinPiglinEntity.java | 3 +- .../minecraft/entity/MixinPlayerEntity.java | 15 +-- .../minecraft/entity/MixinSquidEntity.java | 5 +- .../minecraft/entity/MixinVexEntity.java | 5 +- .../minecraft/entity/MixinWolfEntity.java | 7 +- .../fixes/minecraft/input/MixinCamera.java | 6 +- .../minecraft/input/MixinKeyboardInput.java | 3 +- .../fixes/minecraft/item/MixinAxeItem.java | 5 +- .../fixes/minecraft/item/MixinBlockItem.java | 3 +- .../fixes/minecraft/item/MixinBrushItem.java | 5 +- .../minecraft/item/MixinEnderPearlItem.java | 3 +- .../item/MixinFireworkRocketItem.java | 3 +- .../minecraft/item/MixinHeldItemRenderer.java | 1 + .../fixes/minecraft/item/MixinHoeItem.java | 3 +- .../mixin/fixes/minecraft/item/MixinItem.java | 5 +- .../item/MixinItemCooldownManager.java | 5 +- .../item/MixinItemGroup_EntriesImpl.java | 5 +- .../fixes/minecraft/item/MixinItemGroups.java | 3 +- .../item/MixinItemPlacementContext.java | 3 +- .../minecraft/item/MixinItemRenderer.java | 5 +- .../fixes/minecraft/item/MixinItemStack.java | 3 +- .../minecraft/item/MixinMiningToolItem.java | 5 +- .../minecraft/item/MixinPickaxeItem.java | 7 +- .../fixes/minecraft/item/MixinShovelItem.java | 3 +- .../fixes/minecraft/item/MixinSwordItem.java | 3 +- .../MixinClientCommonNetworkHandler.java | 7 +- .../MixinClientPlayNetworkHandler.java | 23 ++-- .../packet/MixinChatMessageC2SPacket.java | 7 +- .../minecraft/packet/MixinPacketByteBuf.java | 5 +- .../MixinUpdatePlayerAbilitiesC2SPacket.java | 5 +- .../minecraft/screen/MixinAnvilScreen.java | 3 +- .../minecraft/screen/MixinChatScreen.java | 9 +- .../screen/MixinCommandBlockScreen.java | 3 +- .../screen/MixinConnectScreen_1.java | 24 ++-- .../screen/MixinCreativeInventoryScreen.java | 7 +- .../screen/MixinDownloadingTerrainScreen.java | 5 +- .../screen/MixinGameModeSelectionScreen.java | 10 +- ...ModeSelectionScreen_GameModeSelection.java | 5 +- .../minecraft/screen/MixinHandledScreens.java | 5 +- .../screen/MixinJigsawBlockScreen.java | 7 +- .../minecraft/screen}/MixinOptionsScreen.java | 5 +- .../fixes/minecraft/screen/MixinScreen.java | 5 +- .../screen/MixinStructureBlockScreen_1.java | 3 +- .../minecraft/screen/hud/MixinChatHud.java | 6 +- .../minecraft/screen/hud/MixinInGameHud.java | 9 +- .../screen/merchant/MixinMerchantScreen.java | 5 +- .../merchant/MixinMerchantScreenHandler.java | 5 +- ...xinBrewingStandScreenHandler_FuelSlot.java | 6 +- .../MixinCraftingScreenHandler.java | 5 +- .../MixinPlayerScreenHandler.java | 2 +- .../screenhandler/MixinScreenHandler.java | 3 +- .../viabedrock/MixinBedrockProtocol.java | 7 +- .../fixes/viabedrock/MixinJoinPackets.java | 5 +- .../MixinClassicProtocolExtension.java | 20 ++-- .../MixinClientboundPacketsc0_30cpe.java | 5 +- ...MixinExtensionProtocolMetadataStorage.java | 4 +- .../vialegacy/MixinProtocol1_8to1_7_6_10.java | 9 +- .../MixinProtocolc0_30toc0_30cpe.java | 7 +- .../fixes/vialegacy/MixinViaLegacyConfig.java | 3 +- .../viaversion/MixinChatItemRewriter.java | 1 + .../fixes/viaversion/MixinChunkType1_8.java | 1 + .../viaversion/MixinCommandBlockProvider.java | 5 +- .../fixes/viaversion/MixinCommonBoss.java | 5 +- .../viaversion/MixinEntityIdRewriter.java | 3 +- .../viaversion/MixinEntityPackets1_17.java | 3 +- .../viaversion/MixinEntityPackets_6_1.java | 1 + .../MixinInventoryAcknowledgements.java | 9 +- .../viaversion/MixinInventoryPackets.java | 7 +- .../MixinMetadataRewriter1_15To1_14_4.java | 5 +- .../MixinMetadataRewriter1_9To1_8.java | 1 + .../viaversion/MixinNamedCompoundTagType.java | 5 +- .../viaversion/MixinProtocol1_11To1_10.java | 5 +- .../fixes/viaversion/MixinSkullHandler.java | 3 +- .../viaversion/MixinWorldPackets1_13.java | 1 + .../viaversion/MixinWorldPackets1_16_2.java | 1 + .../viaversion/MixinWorldPackets1_17.java | 3 +- .../viaversion/MixinWorldPackets1_19.java | 7 +- .../MixinAbstractFenceConnectionHandler.java | 1 + .../MixinGlassConnectionHandler.java | 1 + .../viaversion/MixinProtocolVersion.java | 1 + .../mappings/PackFormatsMappings.java | 2 +- .../protocolhack/ProtocolHack.java | 24 ++-- .../ViaFabricPlusVLCommandHandler.java | 4 +- .../netty/ViaFabricPlusVLLegacyPipeline.java | 6 +- .../ViaFabricPlusGameProfileFetcher.java | 6 +- .../util/BlockStateTranslator.java | 2 +- .../protocolhack/util/ItemTranslator.java | 2 +- .../protocolhack/util/ViaJarReplacer.java | 2 +- .../viafabricplus/screen/MappedSlotEntry.java | 4 +- .../viafabricplus/screen/VFPScreen.java | 2 +- .../screen/classic4j/BetaCraftScreen.java | 4 +- .../classicube/ClassiCubeLoginScreen.java | 6 +- .../classicube/ClassiCubeMFAScreen.java | 4 +- .../ClassiCubeServerListScreen.java | 8 +- .../common/ProtocolSelectionScreen.java | 4 +- .../screen/settings/SettingsScreen.java | 2 +- .../settings/impl/AuthenticationSettings.java | 2 +- .../settings/impl/BedrockSettings.java | 4 +- .../settings/impl/DebugSettings.java | 2 +- .../settings/impl/ExperimentalSettings.java | 2 +- .../settings/impl/GeneralSettings.java | 13 +- .../settings/impl/VisualSettings.java | 2 +- .../type/ProtocolSyncBooleanSetting.java | 4 +- .../viafabricplus/util/ChatUtil.java | 4 +- src/main/resources/fabric.mod.json | 1 + src/main/resources/viafabricplus.mixins.json | 41 +++---- 220 files changed, 978 insertions(+), 1310 deletions(-) rename src/main/java/de/florianmichael/viafabricplus/event/{DisconnectConnectionCallback.java => DisconnectCallback.java} (82%) rename src/main/java/de/florianmichael/viafabricplus/event/{FinishMinecraftLoadCallback.java => PostGameLoadCallback.java} (78%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/BoatRenderer_1_8.java (94%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/ClientPlayerInteractionManager1_18_2.java (96%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/ClientsideFixes.java (93%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/EntityHeightOffsetsPre1_20_2.java (99%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/RecipesPre1_12.java (98%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/TripleChestHandler1_13_2.java (96%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/account/BedrockAccountHandler.java (97%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/account/ClassiCubeAccountHandler.java (90%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/classic/ClassicWorldHeightInjection.java (99%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/classic/CustomClassicProtocolExtensions.java (95%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/classic/command/ClassicViaSubCommand.java (92%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/classic/command/impl/ListExtensionsCommand.java (93%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/classic/command/impl/SetTimeCommand.java (93%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/classic/screen/ClassicItemSelectionScreen.java (96%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/model/BoatModel_1_8.java (96%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/model/BuiltinEmptyGlyph1_12_2.java (97%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/model/KeyPairResponse1_19_0.java (95%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/tracker/JoinGameTracker.java (96%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/tracker/TeleportTracker.java (95%) rename src/main/java/de/florianmichael/viafabricplus/{definition => fixes}/tracker/WolfHealthTracker.java (92%) delete mode 100644 src/main/java/de/florianmichael/viafabricplus/information/AbstractInformationGroup.java delete mode 100644 src/main/java/de/florianmichael/viafabricplus/information/InformationSystem.java delete mode 100644 src/main/java/de/florianmichael/viafabricplus/information/impl/BedrockInformation.java delete mode 100644 src/main/java/de/florianmichael/viafabricplus/information/impl/C0_30CPEInformation.java delete mode 100644 src/main/java/de/florianmichael/viafabricplus/information/impl/GeneralInformation.java delete mode 100644 src/main/java/de/florianmichael/viafabricplus/information/impl/V1_1Information.java delete mode 100644 src/main/java/de/florianmichael/viafabricplus/information/impl/V1_2_4_5Information.java delete mode 100644 src/main/java/de/florianmichael/viafabricplus/information/impl/V1_5_2Information.java delete mode 100644 src/main/java/de/florianmichael/viafabricplus/information/impl/V1_7_10Information.java rename src/main/java/de/florianmichael/viafabricplus/injection/{MixinPlugin.java => VFPMixinPlugin.java} (77%) delete mode 100644 src/main/java/de/florianmichael/viafabricplus/injection/access/IKeyPairResponse.java rename src/main/java/de/florianmichael/viafabricplus/injection/access/{IPublicKeyData.java => ILegacyKeySignatureStorage.java} (83%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => connect}/MixinClientConnection.java (75%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => connect}/MixinClientConnection_1.java (93%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => connect}/MixinClientLoginNetworkHandler.java (87%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => integration}/MixinAddServerScreen.java (74%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => integration}/MixinDebugHud.java (55%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => integration}/MixinDownloadingTerrainScreenAndConnectScreen.java (62%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => integration}/MixinMinecraftClient.java (76%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => integration}/MixinMultiplayerScreen.java (66%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => integration}/MixinMultiplayerServerListPinger_1.java (72%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => integration}/MixinMultiplayerServerListWidget_ServerEntry.java (60%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => per_server_version}/MixinConnectScreen_1.java (87%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => per_server_version}/MixinMultiplayerServerListPinger.java (82%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => per_server_version}/MixinPerformanceLog.java (95%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/{ => per_server_version}/MixinServerInfo.java (89%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/{ => compat}/classic4j/MixinCCAuthenticationResponse.java (88%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/{base => compat/classic4j}/MixinTextFieldWidget.java (81%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/{ => compat}/jsonwebtoken/MixinClasses.java (93%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/{ => compat}/jsonwebtoken/MixinDefaultJwtParserBuilder.java (92%) rename src/main/java/de/florianmichael/viafabricplus/injection/mixin/{base => fixes/minecraft/screen}/MixinOptionsScreen.java (92%) diff --git a/.github/DEVELOPER_API.md b/.github/DEVELOPER_API.md index 2cfa267b..70cd9f17 100644 --- a/.github/DEVELOPER_API.md +++ b/.github/DEVELOPER_API.md @@ -40,7 +40,7 @@ final VersionRange range = ItemReleaseVersionDefinition.INSTANCE.getItemMap().ge #### Creating own settings for the settings screen: ```java public class ExampleSettingGroup extends SettingGroup { - public final static ExampleSettingGroup INSTANCE = new ExampleSettingGroup(); + public static final ExampleSettingGroup INSTANCE = new ExampleSettingGroup(); public final BooleanSetting test = new BooleanSetting("Test", false); diff --git a/build.gradle b/build.gradle index 8216aad0..687d216a 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ base { } configurations { - jij + jij // jar in jar configuration } repositories { @@ -42,12 +42,14 @@ loom { } dependencies { - // Minecraft/Fabric + // Minecraft/Fabric and mods minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" + modCompileOnly "com.terraformersmc:modmenu:${project.mod_menu_version}" + // ViaVersion Libraries jij "com.viaversion:viaversion-common:${project.viaversion_version}" jij ("com.viaversion:viabackwards-common:${project.viabackwards_version}") { @@ -75,18 +77,18 @@ dependencies { exclude group: "com.google.code.gson", module: "gson" exclude group: "org.slf4j", module: "slf4j-api" } - jij("org.cloudburstmc.netty:netty-transport-raknet:${project.raknet_transport_version}") { - exclude group: "io.netty" - } // Lenni0451 Libraries jij "net.lenni0451:Reflect:${project.reflect_version}" // Misc Libraries - modCompileOnly "com.terraformersmc:modmenu:${project.mod_menu_version}" - jij(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${project.mixin_extras_version}")) + jij("org.cloudburstmc.netty:netty-transport-raknet:${project.raknet_transport_version}") { + exclude group: "io.netty" + } jij "de.florianmichael:Classic4J:${project.classic4j_version}" + jij(annotationProcessor("com.github.llamalad7.mixinextras:mixinextras-fabric:${project.mixin_extras_version}")) + // Fabric's jar in jar system doesn't support transitive dependencies, so we have to manually add them afterEvaluate { configurations.jij.incoming.resolutionResult.allDependencies { dependencies.include(dependencies.implementation(requested.toString())) diff --git a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java index 8fbca38f..8d92e951 100644 --- a/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java +++ b/src/main/java/de/florianmichael/viafabricplus/ViaFabricPlus.java @@ -21,14 +21,13 @@ package de.florianmichael.viafabricplus; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import de.florianmichael.viafabricplus.definition.ClientsideFixes; -import de.florianmichael.viafabricplus.definition.account.BedrockAccountHandler; -import de.florianmichael.viafabricplus.definition.account.ClassiCubeAccountHandler; -import de.florianmichael.viafabricplus.definition.classic.CustomClassicProtocolExtensions; -import de.florianmichael.viafabricplus.definition.classic.screen.ClassicItemSelectionScreen; -import de.florianmichael.viafabricplus.event.FinishMinecraftLoadCallback; +import de.florianmichael.viafabricplus.fixes.ClientsideFixes; +import de.florianmichael.viafabricplus.fixes.account.BedrockAccountHandler; +import de.florianmichael.viafabricplus.fixes.account.ClassiCubeAccountHandler; +import de.florianmichael.viafabricplus.fixes.classic.CustomClassicProtocolExtensions; +import de.florianmichael.viafabricplus.fixes.classic.screen.ClassicItemSelectionScreen; +import de.florianmichael.viafabricplus.event.PostGameLoadCallback; import de.florianmichael.viafabricplus.event.PreLoadCallback; -import de.florianmichael.viafabricplus.information.InformationSystem; import de.florianmichael.viafabricplus.mappings.CharacterMappings; import de.florianmichael.viafabricplus.mappings.ItemReleaseVersionMappings; import de.florianmichael.viafabricplus.mappings.PackFormatsMappings; @@ -61,27 +60,24 @@ import java.io.File; * * TODO | Migration v3 * - Make recipe fixes dynamic instead of a data dump in java classes - * - Make mixin injection methods private - * - Make mixins abstract * - Rename all methods * - Use ViaProxy config patch for some clientside fixes options (Remove ViaFabricPlusVLViaConfig) - * - Is de.florianmichael.viafabricplus.injection.mixin.jsonwebtoken.* still needed? - * - Apply MixinAutoRefillHandler_ItemSlotMonitor only when mod is actually installed - * - Make block shapes static - * - Remove information package / system + * - Re-add Debug Hud information list + * - Recode config save base to support singleton Jsons + * - Rebase fixes package / change all packages + * - Fix auto detect to not be a huge mess */ public class ViaFabricPlus { - public final static Gson GSON = new GsonBuilder().setPrettyPrinting().create(); - public final static Logger LOGGER = LogManager.getLogger("ViaFabricPlus"); - public final static File RUN_DIRECTORY = new File("ViaFabricPlus"); + public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); + public static final Logger LOGGER = LogManager.getLogger("ViaFabricPlus"); + public static final File RUN_DIRECTORY = new File("ViaFabricPlus"); - public final static ViaFabricPlus INSTANCE = new ViaFabricPlus(); + public static final ViaFabricPlus INSTANCE = new ViaFabricPlus(); private final SettingsSystem settingsSystem = new SettingsSystem(); - private final InformationSystem informationSystem = new InformationSystem(); - public void init() { + public void bootstrap() { if (!RUN_DIRECTORY.exists()) { RUN_DIRECTORY.mkdir(); } @@ -108,13 +104,12 @@ public class ViaFabricPlus { ProtocolHack.init(); // Stuff which requires Minecraft to be initialized - FinishMinecraftLoadCallback.EVENT.register(() -> { + PostGameLoadCallback.EVENT.register(() -> { // Has to be loaded before the settings system in order to catch the ChangeProtocolVersionCallback call ClassicItemSelectionScreen.create(); // General settings settingsSystem.init(); - informationSystem.init(); // Version related mappings PackFormatsMappings.load(); @@ -125,8 +120,4 @@ public class ViaFabricPlus { public SettingsSystem getSettingsSystem() { return settingsSystem; } - - public InformationSystem getInformationSystem() { - return informationSystem; - } } diff --git a/src/main/java/de/florianmichael/viafabricplus/event/DisconnectConnectionCallback.java b/src/main/java/de/florianmichael/viafabricplus/event/DisconnectCallback.java similarity index 82% rename from src/main/java/de/florianmichael/viafabricplus/event/DisconnectConnectionCallback.java rename to src/main/java/de/florianmichael/viafabricplus/event/DisconnectCallback.java index d1f78721..db662459 100644 --- a/src/main/java/de/florianmichael/viafabricplus/event/DisconnectConnectionCallback.java +++ b/src/main/java/de/florianmichael/viafabricplus/event/DisconnectCallback.java @@ -25,10 +25,10 @@ import net.fabricmc.fabric.api.event.EventFactory; /** * This event is fired when the user disconnects from a server. */ -public interface DisconnectConnectionCallback { +public interface DisconnectCallback { - Event EVENT = EventFactory.createArrayBacked(DisconnectConnectionCallback.class, listeners -> () -> { - for (DisconnectConnectionCallback listener : listeners) { + Event EVENT = EventFactory.createArrayBacked(DisconnectCallback.class, listeners -> () -> { + for (DisconnectCallback listener : listeners) { listener.onDisconnect(); } }); diff --git a/src/main/java/de/florianmichael/viafabricplus/event/FinishMinecraftLoadCallback.java b/src/main/java/de/florianmichael/viafabricplus/event/PostGameLoadCallback.java similarity index 78% rename from src/main/java/de/florianmichael/viafabricplus/event/FinishMinecraftLoadCallback.java rename to src/main/java/de/florianmichael/viafabricplus/event/PostGameLoadCallback.java index 4fb427da..752dcf7e 100644 --- a/src/main/java/de/florianmichael/viafabricplus/event/FinishMinecraftLoadCallback.java +++ b/src/main/java/de/florianmichael/viafabricplus/event/PostGameLoadCallback.java @@ -25,13 +25,13 @@ import net.fabricmc.fabric.api.event.EventFactory; /** * This event is fired when Minecraft's loading tree is finished. This should be at the end of the {@link net.minecraft.client.MinecraftClient} constructor */ -public interface FinishMinecraftLoadCallback { +public interface PostGameLoadCallback { - Event EVENT = EventFactory.createArrayBacked(FinishMinecraftLoadCallback.class, listeners -> () -> { - for (FinishMinecraftLoadCallback listener : listeners) { - listener.onFinishMinecraftLoad(); + Event EVENT = EventFactory.createArrayBacked(PostGameLoadCallback.class, listeners -> () -> { + for (PostGameLoadCallback listener : listeners) { + listener.postGameLoad(); } }); - void onFinishMinecraftLoad(); + void postGameLoad(); } diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/BoatRenderer_1_8.java b/src/main/java/de/florianmichael/viafabricplus/fixes/BoatRenderer_1_8.java similarity index 94% rename from src/main/java/de/florianmichael/viafabricplus/definition/BoatRenderer_1_8.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/BoatRenderer_1_8.java index 9e153a32..c88d5d6f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/BoatRenderer_1_8.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/BoatRenderer_1_8.java @@ -17,9 +17,9 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition; +package de.florianmichael.viafabricplus.fixes; -import de.florianmichael.viafabricplus.definition.model.BoatModel_1_8; +import de.florianmichael.viafabricplus.fixes.model.BoatModel_1_8; import net.minecraft.client.render.OverlayTexture; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; @@ -32,7 +32,7 @@ import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.RotationAxis; public class BoatRenderer_1_8 extends EntityRenderer { - private final static Identifier TEXTURE = new Identifier("viafabricplus", "textures/boat_1_8.png"); + private static final Identifier TEXTURE = new Identifier("viafabricplus", "textures/boat_1_8.png"); private final BoatModel_1_8 model; public BoatRenderer_1_8(EntityRendererFactory.Context ctx) { diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/ClientPlayerInteractionManager1_18_2.java b/src/main/java/de/florianmichael/viafabricplus/fixes/ClientPlayerInteractionManager1_18_2.java similarity index 96% rename from src/main/java/de/florianmichael/viafabricplus/definition/ClientPlayerInteractionManager1_18_2.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/ClientPlayerInteractionManager1_18_2.java index 21d3b42f..4d3724d1 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/ClientPlayerInteractionManager1_18_2.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/ClientPlayerInteractionManager1_18_2.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition; +package de.florianmichael.viafabricplus.fixes; import de.florianmichael.viafabricplus.ViaFabricPlus; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; @@ -37,7 +37,7 @@ import java.util.Objects; import java.util.function.Consumer; public class ClientPlayerInteractionManager1_18_2 { - public final static Consumer OLD_PACKET_HANDLER = data -> { + public static final Consumer OLD_PACKET_HANDLER = data -> { try { final var pos = data.readBlockPos(); final var blockState = Block.STATE_IDS.get(BlockStateTranslator.translateBlockState1_18(data.readVarInt())); @@ -50,7 +50,7 @@ public class ClientPlayerInteractionManager1_18_2 { } }; - private final static Object2ObjectLinkedOpenHashMap, PositionAndRotation> UN_ACKED_ACTIONS = new Object2ObjectLinkedOpenHashMap<>(); + private static final Object2ObjectLinkedOpenHashMap, PositionAndRotation> UN_ACKED_ACTIONS = new Object2ObjectLinkedOpenHashMap<>(); public static void trackBlockAction(final PlayerActionC2SPacket.Action action, final BlockPos blockPos) { final var player = MinecraftClient.getInstance().player; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/ClientsideFixes.java b/src/main/java/de/florianmichael/viafabricplus/fixes/ClientsideFixes.java similarity index 93% rename from src/main/java/de/florianmichael/viafabricplus/definition/ClientsideFixes.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/ClientsideFixes.java index 087f1e02..6e89ef7f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/ClientsideFixes.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/ClientsideFixes.java @@ -17,13 +17,13 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition; +package de.florianmichael.viafabricplus.fixes; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ArmorType; import de.florianmichael.viafabricplus.event.ChangeProtocolVersionCallback; -import de.florianmichael.viafabricplus.event.FinishMinecraftLoadCallback; +import de.florianmichael.viafabricplus.event.PostGameLoadCallback; import de.florianmichael.viafabricplus.event.LoadClassicProtocolExtensionCallback; -import de.florianmichael.viafabricplus.injection.MixinPlugin; +import de.florianmichael.viafabricplus.injection.VFPMixinPlugin; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; @@ -55,22 +55,22 @@ public class ClientsideFixes { /** * Legacy versions do not support SRV records, so we need to resolve them manually */ - public final static VersionRange LEGACY_SRV_RESOLVE = VersionRange.andOlder(VersionEnum.r1_2_4tor1_2_5).add(VersionRange.single(VersionEnum.bedrockLatest)); + public static final VersionRange LEGACY_SRV_RESOLVE = VersionRange.andOlder(VersionEnum.r1_2_4tor1_2_5).add(VersionRange.single(VersionEnum.bedrockLatest)); /** * Contains the armor points of all armor items in legacy versions (<= 1.8.x) */ - private final static Map LEGACY_ARMOR_POINTS = new HashMap<>(); + private static final Map LEGACY_ARMOR_POINTS = new HashMap<>(); /** * Contains all tasks that are waiting for a packet to be received, this system can be used to sync ViaVersion tasks with the correct thread */ - private final static Map> PENDING_EXECUTION_TASKS = new ConcurrentHashMap<>(); + private static final Map> PENDING_EXECUTION_TASKS = new ConcurrentHashMap<>(); /** * This identifier is an internal identifier that is used to identify packets that are sent by ViaFabricPlus */ - public final static String PACKET_SYNC_IDENTIFIER = UUID.randomUUID() + ":" + UUID.randomUUID(); + public static final String PACKET_SYNC_IDENTIFIER = UUID.randomUUID() + ":" + UUID.randomUUID(); /** * The current chat limit @@ -78,7 +78,7 @@ public class ClientsideFixes { private static int currentChatLimit = 256; public static void init() { - FinishMinecraftLoadCallback.EVENT.register(() -> { + PostGameLoadCallback.EVENT.register(() -> { // Loads the armor points of all armor items in legacy versions (<= 1.8.x) for (Item armorItem : Arrays.asList(Items.LEATHER_HELMET, Items.LEATHER_CHESTPLATE, Items.LEATHER_BOOTS, Items.CHAINMAIL_HELMET, Items.CHAINMAIL_CHESTPLATE, Items.CHAINMAIL_LEGGINGS, Items.CHAINMAIL_BOOTS, @@ -125,7 +125,7 @@ public class ClientsideFixes { currentChatLimit = 256; } - if (!MixinPlugin.DASH_LOADER_PRESENT) { + if (!VFPMixinPlugin.DASH_LOADER_PRESENT) { // Reloads all font storages to fix the font renderer for (FontStorage storage : MinecraftClient.getInstance().fontManager.fontStorages.values()) { storage.glyphRendererCache.clear(); diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/EntityHeightOffsetsPre1_20_2.java b/src/main/java/de/florianmichael/viafabricplus/fixes/EntityHeightOffsetsPre1_20_2.java similarity index 99% rename from src/main/java/de/florianmichael/viafabricplus/definition/EntityHeightOffsetsPre1_20_2.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/EntityHeightOffsetsPre1_20_2.java index 9068d7e0..01c28394 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/EntityHeightOffsetsPre1_20_2.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/EntityHeightOffsetsPre1_20_2.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition; +package de.florianmichael.viafabricplus.fixes; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import net.minecraft.entity.*; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/RecipesPre1_12.java b/src/main/java/de/florianmichael/viafabricplus/fixes/RecipesPre1_12.java similarity index 98% rename from src/main/java/de/florianmichael/viafabricplus/definition/RecipesPre1_12.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/RecipesPre1_12.java index 5f13cf6e..89dfc614 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/RecipesPre1_12.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/RecipesPre1_12.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition; +package de.florianmichael.viafabricplus.fixes; import net.minecraft.block.ConcretePowderBlock; import net.minecraft.block.GlazedTerracottaBlock; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/TripleChestHandler1_13_2.java b/src/main/java/de/florianmichael/viafabricplus/fixes/TripleChestHandler1_13_2.java similarity index 96% rename from src/main/java/de/florianmichael/viafabricplus/definition/TripleChestHandler1_13_2.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/TripleChestHandler1_13_2.java index 7b2c5ad1..47e69553 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/TripleChestHandler1_13_2.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/TripleChestHandler1_13_2.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition; +package de.florianmichael.viafabricplus.fixes; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.libs.gson.JsonElement; @@ -35,7 +35,7 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; public class TripleChestHandler1_13_2 { - public final static Consumer TRIPLE_CHEST_HANDLER = data -> { + public static final Consumer TRIPLE_CHEST_HANDLER = data -> { final var byteBuf = data.asByteBuf(); try { diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/account/BedrockAccountHandler.java b/src/main/java/de/florianmichael/viafabricplus/fixes/account/BedrockAccountHandler.java similarity index 97% rename from src/main/java/de/florianmichael/viafabricplus/definition/account/BedrockAccountHandler.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/account/BedrockAccountHandler.java index d9cbe1d7..a7c0984a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/account/BedrockAccountHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/account/BedrockAccountHandler.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.account; +package de.florianmichael.viafabricplus.fixes.account; import com.google.gson.JsonObject; import de.florianmichael.viafabricplus.ViaFabricPlus; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/account/ClassiCubeAccountHandler.java b/src/main/java/de/florianmichael/viafabricplus/fixes/account/ClassiCubeAccountHandler.java similarity index 90% rename from src/main/java/de/florianmichael/viafabricplus/definition/account/ClassiCubeAccountHandler.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/account/ClassiCubeAccountHandler.java index 6c6605ba..84163089 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/account/ClassiCubeAccountHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/account/ClassiCubeAccountHandler.java @@ -17,11 +17,11 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.account; +package de.florianmichael.viafabricplus.fixes.account; import com.google.gson.JsonObject; import de.florianmichael.classic4j.model.classicube.account.CCAccount; -import de.florianmichael.viafabricplus.event.DisconnectConnectionCallback; +import de.florianmichael.viafabricplus.event.DisconnectCallback; import de.florianmichael.viafabricplus.protocolhack.provider.vialegacy.ViaFabricPlusClassicMPPassProvider; import de.florianmichael.viafabricplus.util.FileSaver; @@ -41,7 +41,7 @@ public class ClassiCubeAccountHandler extends FileSaver { public ClassiCubeAccountHandler() { super("classicube.account"); - DisconnectConnectionCallback.EVENT.register(() -> ViaFabricPlusClassicMPPassProvider.classiCubeMPPass = null); + DisconnectCallback.EVENT.register(() -> ViaFabricPlusClassicMPPassProvider.classiCubeMPPass = null); } @Override diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/classic/ClassicWorldHeightInjection.java b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/ClassicWorldHeightInjection.java similarity index 99% rename from src/main/java/de/florianmichael/viafabricplus/definition/classic/ClassicWorldHeightInjection.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/classic/ClassicWorldHeightInjection.java index 179e336a..55f628ba 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/classic/ClassicWorldHeightInjection.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/ClassicWorldHeightInjection.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.classic; +package de.florianmichael.viafabricplus.fixes.classic; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.connection.UserConnection; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/classic/CustomClassicProtocolExtensions.java b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/CustomClassicProtocolExtensions.java similarity index 95% rename from src/main/java/de/florianmichael/viafabricplus/definition/classic/CustomClassicProtocolExtensions.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/classic/CustomClassicProtocolExtensions.java index e975f451..7165124e 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/classic/CustomClassicProtocolExtensions.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/CustomClassicProtocolExtensions.java @@ -17,10 +17,10 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.classic; +package de.florianmichael.viafabricplus.fixes.classic; import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.definition.classic.screen.ClassicItemSelectionScreen; +import de.florianmichael.viafabricplus.fixes.classic.screen.ClassicItemSelectionScreen; import de.florianmichael.viafabricplus.event.LoadClassicProtocolExtensionCallback; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/classic/command/ClassicViaSubCommand.java b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/command/ClassicViaSubCommand.java similarity index 92% rename from src/main/java/de/florianmichael/viafabricplus/definition/classic/command/ClassicViaSubCommand.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/classic/command/ClassicViaSubCommand.java index 2ce86fcb..446ca8ce 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/classic/command/ClassicViaSubCommand.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/command/ClassicViaSubCommand.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.classic.command; +package de.florianmichael.viafabricplus.fixes.classic.command; import com.viaversion.viaversion.api.command.ViaCommandSender; import com.viaversion.viaversion.api.command.ViaSubCommand; @@ -35,6 +35,6 @@ public abstract class ClassicViaSubCommand extends ViaSubCommand { } public UserConnection getUser() { - return ProtocolHack.getMainUserConnection(); + return ProtocolHack.getPlayNetworkUserConnection(); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/classic/command/impl/ListExtensionsCommand.java b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/command/impl/ListExtensionsCommand.java similarity index 93% rename from src/main/java/de/florianmichael/viafabricplus/definition/classic/command/impl/ListExtensionsCommand.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/classic/command/impl/ListExtensionsCommand.java index b7a09a4e..7e2c7db2 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/classic/command/impl/ListExtensionsCommand.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/command/impl/ListExtensionsCommand.java @@ -17,11 +17,11 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.classic.command.impl; +package de.florianmichael.viafabricplus.fixes.classic.command.impl; import com.viaversion.viaversion.api.command.ViaCommandSender; import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.definition.classic.command.ClassicViaSubCommand; +import de.florianmichael.viafabricplus.fixes.classic.command.ClassicViaSubCommand; import de.florianmichael.viafabricplus.injection.access.IExtensionProtocolMetadataStorage; import net.minecraft.util.Formatting; import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.storage.ExtensionProtocolMetadataStorage; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/classic/command/impl/SetTimeCommand.java b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/command/impl/SetTimeCommand.java similarity index 93% rename from src/main/java/de/florianmichael/viafabricplus/definition/classic/command/impl/SetTimeCommand.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/classic/command/impl/SetTimeCommand.java index 2d35a747..e260eb78 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/classic/command/impl/SetTimeCommand.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/command/impl/SetTimeCommand.java @@ -17,11 +17,11 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.classic.command.impl; +package de.florianmichael.viafabricplus.fixes.classic.command.impl; import com.viaversion.viaversion.api.command.ViaCommandSender; import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.definition.classic.command.ClassicViaSubCommand; +import de.florianmichael.viafabricplus.fixes.classic.command.ClassicViaSubCommand; import net.minecraft.util.Formatting; import net.raphimc.vialoader.util.VersionEnum; import net.raphimc.vialegacy.protocols.alpha.protocola1_0_17_1_0_17_4toa1_0_16_2.storage.TimeLockStorage; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/classic/screen/ClassicItemSelectionScreen.java b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/screen/ClassicItemSelectionScreen.java similarity index 96% rename from src/main/java/de/florianmichael/viafabricplus/definition/classic/screen/ClassicItemSelectionScreen.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/classic/screen/ClassicItemSelectionScreen.java index 3f5f2424..e6d70d40 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/classic/screen/ClassicItemSelectionScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/classic/screen/ClassicItemSelectionScreen.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.classic.screen; +package de.florianmichael.viafabricplus.fixes.classic.screen; import de.florianmichael.viafabricplus.event.ChangeProtocolVersionCallback; import de.florianmichael.viafabricplus.screen.VFPScreen; @@ -46,10 +46,10 @@ public class ClassicItemSelectionScreen extends VFPScreen { }); } - private final static int MAX_ROW_DIVIDER = 9; - private final static int ITEM_XY_BOX_DIMENSION_CLASSIC = 25; - private final static int SIDE_OFFSET = 15; - private final static int ITEM_XY_BOX_DIMENSION_MODERN = 16; + private static final int MAX_ROW_DIVIDER = 9; + private static final int ITEM_XY_BOX_DIMENSION_CLASSIC = 25; + private static final int SIDE_OFFSET = 15; + private static final int ITEM_XY_BOX_DIMENSION_MODERN = 16; public Item[][] itemGrid = null; public ItemStack selectedItem = null; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/model/BoatModel_1_8.java b/src/main/java/de/florianmichael/viafabricplus/fixes/model/BoatModel_1_8.java similarity index 96% rename from src/main/java/de/florianmichael/viafabricplus/definition/model/BoatModel_1_8.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/model/BoatModel_1_8.java index f4ceb66a..7ea5055f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/model/BoatModel_1_8.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/model/BoatModel_1_8.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.model; +package de.florianmichael.viafabricplus.fixes.model; import com.google.common.collect.ImmutableList; import net.minecraft.client.model.*; @@ -27,7 +27,7 @@ import net.minecraft.entity.vehicle.BoatEntity; import net.minecraft.util.Identifier; public class BoatModel_1_8 extends CompositeEntityModel { - public final static EntityModelLayer MODEL_LAYER = new EntityModelLayer(new Identifier("viafabricplus", "boat_1_8"), "main"); + public static final EntityModelLayer MODEL_LAYER = new EntityModelLayer(new Identifier("viafabricplus", "boat_1_8"), "main"); private final ImmutableList parts; public BoatModel_1_8(ModelPart root) { diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/model/BuiltinEmptyGlyph1_12_2.java b/src/main/java/de/florianmichael/viafabricplus/fixes/model/BuiltinEmptyGlyph1_12_2.java similarity index 97% rename from src/main/java/de/florianmichael/viafabricplus/definition/model/BuiltinEmptyGlyph1_12_2.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/model/BuiltinEmptyGlyph1_12_2.java index 52b0b626..be28f4d5 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/model/BuiltinEmptyGlyph1_12_2.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/model/BuiltinEmptyGlyph1_12_2.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.model; +package de.florianmichael.viafabricplus.fixes.model; import net.minecraft.client.font.Glyph; import net.minecraft.client.font.GlyphRenderer; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/model/KeyPairResponse1_19_0.java b/src/main/java/de/florianmichael/viafabricplus/fixes/model/KeyPairResponse1_19_0.java similarity index 95% rename from src/main/java/de/florianmichael/viafabricplus/definition/model/KeyPairResponse1_19_0.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/model/KeyPairResponse1_19_0.java index cada5c22..6ef1078d 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/model/KeyPairResponse1_19_0.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/model/KeyPairResponse1_19_0.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.model; +package de.florianmichael.viafabricplus.fixes.model; import com.mojang.authlib.yggdrasil.response.KeyPairResponse; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/tracker/JoinGameTracker.java b/src/main/java/de/florianmichael/viafabricplus/fixes/tracker/JoinGameTracker.java similarity index 96% rename from src/main/java/de/florianmichael/viafabricplus/definition/tracker/JoinGameTracker.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/tracker/JoinGameTracker.java index a8a3c142..f94e9100 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/tracker/JoinGameTracker.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/tracker/JoinGameTracker.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.tracker; +package de.florianmichael.viafabricplus.fixes.tracker; import com.viaversion.viaversion.api.connection.StoredObject; import com.viaversion.viaversion.api.connection.UserConnection; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/tracker/TeleportTracker.java b/src/main/java/de/florianmichael/viafabricplus/fixes/tracker/TeleportTracker.java similarity index 95% rename from src/main/java/de/florianmichael/viafabricplus/definition/tracker/TeleportTracker.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/tracker/TeleportTracker.java index 8848b7e0..d730c09a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/tracker/TeleportTracker.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/tracker/TeleportTracker.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.tracker; +package de.florianmichael.viafabricplus.fixes.tracker; import com.viaversion.viaversion.api.connection.StoredObject; import com.viaversion.viaversion.api.connection.UserConnection; diff --git a/src/main/java/de/florianmichael/viafabricplus/definition/tracker/WolfHealthTracker.java b/src/main/java/de/florianmichael/viafabricplus/fixes/tracker/WolfHealthTracker.java similarity index 92% rename from src/main/java/de/florianmichael/viafabricplus/definition/tracker/WolfHealthTracker.java rename to src/main/java/de/florianmichael/viafabricplus/fixes/tracker/WolfHealthTracker.java index 39c6b2f8..cf2f4ac4 100644 --- a/src/main/java/de/florianmichael/viafabricplus/definition/tracker/WolfHealthTracker.java +++ b/src/main/java/de/florianmichael/viafabricplus/fixes/tracker/WolfHealthTracker.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.definition.tracker; +package de.florianmichael.viafabricplus.fixes.tracker; import com.viaversion.viaversion.api.connection.StoredObject; import com.viaversion.viaversion.api.connection.UserConnection; @@ -39,7 +39,7 @@ public class WolfHealthTracker extends StoredObject { } public static WolfHealthTracker get() { - final var connection = ProtocolHack.getMainUserConnection(); + final var connection = ProtocolHack.getPlayNetworkUserConnection(); if (connection == null) return null; if (!connection.has(WolfHealthTracker.class)) { diff --git a/src/main/java/de/florianmichael/viafabricplus/information/AbstractInformationGroup.java b/src/main/java/de/florianmichael/viafabricplus/information/AbstractInformationGroup.java deleted file mode 100644 index c19c5b86..00000000 --- a/src/main/java/de/florianmichael/viafabricplus/information/AbstractInformationGroup.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD - * Copyright (C) 2023 RK_01/RaphiMC and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.florianmichael.viafabricplus.information; - -import com.viaversion.viaversion.api.connection.UserConnection; -import net.raphimc.vialoader.util.VersionRange; - -import java.util.List; - -public abstract class AbstractInformationGroup { - private final VersionRange versionRange; - - public AbstractInformationGroup(final VersionRange versionRange) { - this.versionRange = versionRange; - } - - public abstract void applyInformation(final UserConnection userConnection, final List output); - - public String format(double a) { - return String.format("%.2f", a); - } - - public String formatBytes(long value) { - if (value < 1024L) - return value + " B"; - else if (value < 1024L * 1024L) - return format(((double) value / 1024.0)) + " Kb"; - else if (value < 1024L * 1024L * 1024L) - return format(((double) value / 1024.0 / 1024.0)) + " Mb"; - else if (value < 1024L * 1024L * 1024L * 1024L) - return format(((double) value / 1024.0 / 1024.0 / 1024.0)) + " Gb"; - else - return format(((double) value / 1024.0 / 1024.0 / 1024.0 / 1024.0)) + " Tb"; - } - - public VersionRange getVersionRange() { - return versionRange; - } -} diff --git a/src/main/java/de/florianmichael/viafabricplus/information/InformationSystem.java b/src/main/java/de/florianmichael/viafabricplus/information/InformationSystem.java deleted file mode 100644 index 13c76ed9..00000000 --- a/src/main/java/de/florianmichael/viafabricplus/information/InformationSystem.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD - * Copyright (C) 2023 RK_01/RaphiMC and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.florianmichael.viafabricplus.information; - -import de.florianmichael.viafabricplus.information.impl.*; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public class InformationSystem { - private final List groups = new ArrayList<>(); - - public void init() { - addGroup( - new GeneralInformation(), - - new BedrockInformation(), - - new V1_7_10Information(), - new V1_5_2Information(), - new V1_2_4_5Information(), - new V1_1Information(), - - new C0_30CPEInformation() - ); - } - - public void addGroup(final AbstractInformationGroup... groups) { - Collections.addAll(this.groups, groups); - } - - public List getGroups() { - return groups; - } -} diff --git a/src/main/java/de/florianmichael/viafabricplus/information/impl/BedrockInformation.java b/src/main/java/de/florianmichael/viafabricplus/information/impl/BedrockInformation.java deleted file mode 100644 index 9792afed..00000000 --- a/src/main/java/de/florianmichael/viafabricplus/information/impl/BedrockInformation.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD - * Copyright (C) 2023 RK_01/RaphiMC and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.florianmichael.viafabricplus.information.impl; - -import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.definition.tracker.JoinGameTracker; -import de.florianmichael.viafabricplus.information.AbstractInformationGroup; -import de.florianmichael.viafabricplus.protocolhack.provider.viabedrock.ViaFabricPlusBlobCacheProvider; -import net.lenni0451.reflect.stream.RStream; -import net.lenni0451.reflect.stream.field.FieldStream; -import net.raphimc.viabedrock.api.chunk.BedrockChunk; -import net.raphimc.viabedrock.api.model.entity.Entity; -import net.raphimc.viabedrock.protocol.data.enums.bedrock.ServerMovementModes; -import net.raphimc.viabedrock.protocol.providers.BlobCacheProvider; -import net.raphimc.viabedrock.protocol.storage.BlobCache; -import net.raphimc.viabedrock.protocol.storage.ChunkTracker; -import net.raphimc.viabedrock.protocol.storage.GameSessionStorage; -import net.raphimc.vialoader.util.VersionEnum; -import net.raphimc.vialoader.util.VersionRange; - -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.CompletableFuture; - -public class BedrockInformation extends AbstractInformationGroup { - - public BedrockInformation() { - super(VersionRange.single(VersionEnum.bedrockLatest)); - } - - public String formatMovementMode(final int movementMode) { - if (movementMode == ServerMovementModes.CLIENT) return "Client"; - if (movementMode == ServerMovementModes.SERVER) return "Server"; - - return "Server with rewind"; - } - - @Override - public void applyInformation(UserConnection userConnection, List output) { - final ViaFabricPlusBlobCacheProvider blobCache = (ViaFabricPlusBlobCacheProvider) Via.getManager().getProviders().get(BlobCacheProvider.class); - if (blobCache != null) { - final long totalSize = blobCache.getSize(); - final int blobCount = blobCache.getBlobs().size(); - final int pendingCount = RStream.of(userConnection.get(BlobCache.class)).fields().by("pending").>>get().size(); - - if (totalSize != 0 || blobCount != 0 || pendingCount != 0) { - output.add("Blob Cache:"); - } - - if (totalSize != 0) output.add("Total size: " + formatBytes(totalSize)); - if (blobCount != 0) output.add("Blob count: " + blobCount); - if (pendingCount != 0) output.add("Pending count: " + pendingCount); - } - final ChunkTracker chunkTracker = userConnection.get(ChunkTracker.class); - if (chunkTracker != null) { - final FieldStream fields = RStream.of(chunkTracker).fields(); - final int subChunkRequests = fields.by("subChunkRequests").>get().size(); - final int pendingSubChunks = fields.by("pendingSubChunks").>get().size(); - final int chunks = fields.by("chunks").>get().size(); - - if (subChunkRequests != 0 || pendingSubChunks != 0 || chunks != 0) { - if (!output.isEmpty()) output.add(""); - output.add("Chunk Tracker:"); - } - - if (subChunkRequests != 0) output.add("Sub-chunk requests: " + subChunkRequests); - if (pendingSubChunks != 0) output.add("Pending Sub-chunks: " + pendingSubChunks); - if (chunks != 0) output.add("Chunks: " + chunks); - } - final net.raphimc.viabedrock.protocol.storage.EntityTracker entityTracker = userConnection.get(net.raphimc.viabedrock.protocol.storage.EntityTracker.class); - if (entityTracker != null) { - if (!output.isEmpty()) output.add(""); - final int entities = RStream.of(entityTracker).fields().by("entities").>get().size(); - - if (entities != 0) { - output.add("Entity Tracker: " + entities); - } - } - final JoinGameTracker joinGameTracker = userConnection.get(JoinGameTracker.class); - if (!joinGameTracker.getLevelId().isEmpty() || joinGameTracker.getSeed() != 0 || joinGameTracker.getEnchantmentSeed() != 0) { - if (!output.isEmpty()) output.add(""); - output.add("Join Game:"); - } - if (joinGameTracker.getSeed() != 0) output.add("World Seed: " + joinGameTracker.getSeed()); - if (!joinGameTracker.getLevelId().isEmpty()) output.add("Level Id: " + joinGameTracker.getLevelId()); - if (joinGameTracker.getEnchantmentSeed() != 0) output.add("Enchantment Seed: " + joinGameTracker.getEnchantmentSeed()); - - final GameSessionStorage gameSessionStorage = userConnection.get(GameSessionStorage.class); - if (gameSessionStorage != null) { - output.add("Movement mode: " + formatMovementMode(gameSessionStorage.getMovementMode())); - } - } -} diff --git a/src/main/java/de/florianmichael/viafabricplus/information/impl/C0_30CPEInformation.java b/src/main/java/de/florianmichael/viafabricplus/information/impl/C0_30CPEInformation.java deleted file mode 100644 index a215e6fb..00000000 --- a/src/main/java/de/florianmichael/viafabricplus/information/impl/C0_30CPEInformation.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD - * Copyright (C) 2023 RK_01/RaphiMC and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.florianmichael.viafabricplus.information.impl; - -import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.information.AbstractInformationGroup; -import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.storage.ExtensionProtocolMetadataStorage; -import net.raphimc.vialoader.util.VersionEnum; -import net.raphimc.vialoader.util.VersionRange; - -import java.util.List; - -public class C0_30CPEInformation extends AbstractInformationGroup { - - public C0_30CPEInformation() { - super(VersionRange.single(VersionEnum.c0_30cpe)); - } - - @Override - public void applyInformation(UserConnection userConnection, List output) { - if (userConnection.has(ExtensionProtocolMetadataStorage.class)) output.add("Classic extensions: " + userConnection.get(ExtensionProtocolMetadataStorage.class).getExtensionCount()); - } -} diff --git a/src/main/java/de/florianmichael/viafabricplus/information/impl/GeneralInformation.java b/src/main/java/de/florianmichael/viafabricplus/information/impl/GeneralInformation.java deleted file mode 100644 index 0dffd153..00000000 --- a/src/main/java/de/florianmichael/viafabricplus/information/impl/GeneralInformation.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD - * Copyright (C) 2023 RK_01/RaphiMC and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.florianmichael.viafabricplus.information.impl; - -import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.information.AbstractInformationGroup; -import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; - -import java.util.List; - -public class GeneralInformation extends AbstractInformationGroup { - - public GeneralInformation() { - super(null); - } - - @Override - public void applyInformation(UserConnection userConnection, List output) { - output.add("Pipeline count: " + userConnection.getProtocolInfo().getPipeline().pipes().size()); - output.add("Selected version (in the GUI): " + ProtocolHack.getTargetVersion().getName() + " (" + ProtocolHack.getTargetVersion().getVersion() + ")"); - output.add("Connected version: " + ProtocolHack.getTargetVersion().getName() + " (" + ProtocolHack.getTargetVersion().getVersion() + ")"); - } -} diff --git a/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_1Information.java b/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_1Information.java deleted file mode 100644 index 770827ad..00000000 --- a/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_1Information.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD - * Copyright (C) 2023 RK_01/RaphiMC and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.florianmichael.viafabricplus.information.impl; - -import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.information.AbstractInformationGroup; -import net.raphimc.vialegacy.protocols.release.protocol1_2_1_3to1_1.storage.SeedStorage; -import net.raphimc.vialoader.util.VersionEnum; -import net.raphimc.vialoader.util.VersionRange; - -import java.util.List; - -public class V1_1Information extends AbstractInformationGroup { - - public V1_1Information() { - super(VersionRange.andOlder(VersionEnum.r1_1)); - } - - @Override - public void applyInformation(UserConnection userConnection, List output) { - if (userConnection.has(SeedStorage.class)) { - final long seed = userConnection.get(SeedStorage.class).seed; - if (seed != 0) output.add("World Seed: " + seed); - } - } -} diff --git a/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_2_4_5Information.java b/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_2_4_5Information.java deleted file mode 100644 index deb88186..00000000 --- a/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_2_4_5Information.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD - * Copyright (C) 2023 RK_01/RaphiMC and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.florianmichael.viafabricplus.information.impl; - -import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.information.AbstractInformationGroup; -import net.raphimc.vialegacy.protocols.release.protocol1_3_1_2to1_2_4_5.storage.EntityTracker; -import net.raphimc.vialoader.util.VersionEnum; -import net.raphimc.vialoader.util.VersionRange; - -import java.util.List; - -public class V1_2_4_5Information extends AbstractInformationGroup { - - public V1_2_4_5Information() { - super(VersionRange.andOlder(VersionEnum.r1_2_4tor1_2_5)); - } - - @Override - public void applyInformation(UserConnection userConnection, List output) { - if (userConnection.has(EntityTracker.class)) { - final int entities = userConnection.get(EntityTracker.class).getTrackedEntities().size(); - if (entities != 0) output.add("Entity Tracker: " + entities); - } - } -} diff --git a/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_5_2Information.java b/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_5_2Information.java deleted file mode 100644 index 85730652..00000000 --- a/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_5_2Information.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD - * Copyright (C) 2023 RK_01/RaphiMC and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.florianmichael.viafabricplus.information.impl; - -import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.information.AbstractInformationGroup; -import net.raphimc.vialegacy.protocols.release.protocol1_6_1to1_5_2.storage.EntityTracker; -import net.raphimc.vialoader.util.VersionEnum; -import net.raphimc.vialoader.util.VersionRange; - -import java.util.List; - -public class V1_5_2Information extends AbstractInformationGroup { - - public V1_5_2Information() { - super(VersionRange.andOlder(VersionEnum.r1_5_2)); - } - - @Override - public void applyInformation(UserConnection userConnection, List output) { - if (userConnection.has(EntityTracker.class)) { - final int entities = userConnection.get(EntityTracker.class).getTrackedEntities().size(); - if (entities != 0) output.add("Entity Tracker: " + entities); - } - } -} diff --git a/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_7_10Information.java b/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_7_10Information.java deleted file mode 100644 index 8d9b2ab7..00000000 --- a/src/main/java/de/florianmichael/viafabricplus/information/impl/V1_7_10Information.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD - * Copyright (C) 2023 RK_01/RaphiMC and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.florianmichael.viafabricplus.information.impl; - -import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.information.AbstractInformationGroup; -import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.storage.EntityTracker; -import net.raphimc.vialoader.util.VersionEnum; -import net.raphimc.vialoader.util.VersionRange; - -import java.util.List; - -public class V1_7_10Information extends AbstractInformationGroup { - - public V1_7_10Information() { - super(VersionRange.andOlder(VersionEnum.r1_7_6tor1_7_10)); - } - - @Override - public void applyInformation(UserConnection userConnection, List output) { - if (userConnection.has(EntityTracker.class)) { - final int entities = userConnection.get(EntityTracker.class).getTrackedEntities().size(); - if (entities != 0) output.add("Entity Tracker: " + entities); - } - } -} diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/MixinPlugin.java b/src/main/java/de/florianmichael/viafabricplus/injection/VFPMixinPlugin.java similarity index 77% rename from src/main/java/de/florianmichael/viafabricplus/injection/MixinPlugin.java rename to src/main/java/de/florianmichael/viafabricplus/injection/VFPMixinPlugin.java index 4a63e030..7d298fd2 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/MixinPlugin.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/VFPMixinPlugin.java @@ -27,19 +27,23 @@ import org.spongepowered.asm.mixin.extensibility.IMixinInfo; import java.util.List; import java.util.Set; -public class MixinPlugin implements IMixinConfigPlugin { - public final static String INJECTOR_PACKAGE = "de.florianmichael.viafabricplus.injection.mixin"; - private final static String MC_FIXES_PACKAGE = ".fixes.minecraft"; +public class VFPMixinPlugin implements IMixinConfigPlugin { + public static final String INJECTOR_PACKAGE = "de.florianmichael.viafabricplus.injection.mixin."; + + private static final String MC_FIXES_PACKAGE = "fixes.minecraft."; + private static final String COMPAT_PACKAGE = "compat."; public static boolean DASH_LOADER_PRESENT; public static boolean ARMOR_SKIN_PRESENT; + public static boolean IPNEXT_PRESENT; @Override public void onLoad(String mixinPackage) { - final var loader = FabricLoader.getInstance(); + final FabricLoader loader = FabricLoader.getInstance(); DASH_LOADER_PRESENT = loader.isModLoaded("dashloader"); ARMOR_SKIN_PRESENT = loader.isModLoaded("armorskin"); + IPNEXT_PRESENT = loader.isModLoaded("inventoryprofilesnext"); } @Override @@ -49,12 +53,15 @@ public class MixinPlugin implements IMixinConfigPlugin { @Override public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - if (mixinClassName.equals(INJECTOR_PACKAGE + MC_FIXES_PACKAGE + ".MixinFontStorage")) { + if (mixinClassName.equals(INJECTOR_PACKAGE + MC_FIXES_PACKAGE + "MixinFontStorage")) { return !DASH_LOADER_PRESENT; } - if (mixinClassName.equals(INJECTOR_PACKAGE + MC_FIXES_PACKAGE + ".MixinInGameHud")) { + if (mixinClassName.equals(INJECTOR_PACKAGE + MC_FIXES_PACKAGE + "MixinInGameHud")) { return !ARMOR_SKIN_PRESENT; } + if (mixinClassName.equals(INJECTOR_PACKAGE + COMPAT_PACKAGE + "ipnext.MixinAutoRefillHandler_ItemSlotMonitor")) { + return IPNEXT_PRESENT; + } return true; } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/access/IClientConnection.java b/src/main/java/de/florianmichael/viafabricplus/injection/access/IClientConnection.java index f6c84e90..f822386a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/access/IClientConnection.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/access/IClientConnection.java @@ -26,8 +26,8 @@ public interface IClientConnection { void viaFabricPlus$setupPreNettyDecryption(); - VersionEnum viaFabricPlus$getServerVersion(); - void viaFabricPlus$setServerVersion(final VersionEnum serverVersion); + VersionEnum viaFabricPlus$getTargetVersion(); + void viaFabricPlus$setTargetVersion(final VersionEnum serverVersion); UserConnection viaFabricPlus$getUserConnection(); void viaFabricPlus$setUserConnection(final UserConnection userConnection); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/access/IKeyPairResponse.java b/src/main/java/de/florianmichael/viafabricplus/injection/access/IKeyPairResponse.java deleted file mode 100644 index 3cf7b667..00000000 --- a/src/main/java/de/florianmichael/viafabricplus/injection/access/IKeyPairResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus - * Copyright (C) 2021-2023 FlorianMichael/EnZaXD - * Copyright (C) 2023 RK_01/RaphiMC and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package de.florianmichael.viafabricplus.injection.access; - -import java.nio.ByteBuffer; - -public interface IKeyPairResponse { - - ByteBuffer viafabricplus$getLegacyPublicKeySignature(); - - void viafabricplus$setLegacyPublicKeySignature(final ByteBuffer signature); -} diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/access/IPublicKeyData.java b/src/main/java/de/florianmichael/viafabricplus/injection/access/ILegacyKeySignatureStorage.java similarity index 83% rename from src/main/java/de/florianmichael/viafabricplus/injection/access/IPublicKeyData.java rename to src/main/java/de/florianmichael/viafabricplus/injection/access/ILegacyKeySignatureStorage.java index 70b6d80a..3f34b367 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/access/IPublicKeyData.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/access/ILegacyKeySignatureStorage.java @@ -19,10 +19,9 @@ package de.florianmichael.viafabricplus.injection.access; -import java.nio.ByteBuffer; +public interface ILegacyKeySignatureStorage { -public interface IPublicKeyData { + byte[] viafabricplus$getLegacyPublicKeySignature(); - ByteBuffer viaFabricPlus$getV1Key(); - void viaFabricPlus$setV1Key(final ByteBuffer oldKey); + void viafabricplus$setLegacyPublicKeySignature(final byte[] signature); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMain.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMain.java index 30cf0dd5..388cc2f3 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMain.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMain.java @@ -27,10 +27,11 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Main.class) -public class MixinMain { +public abstract class MixinMain { @Inject(method = "main", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/crash/CrashReport;initCrashReport()V")) - private static void preLoad(CallbackInfo ci) { - ViaFabricPlus.INSTANCE.init(); + private static void bootstrap(CallbackInfo ci) { + ViaFabricPlus.INSTANCE.bootstrap(); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinClientConnection.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/connect/MixinClientConnection.java similarity index 75% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinClientConnection.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/connect/MixinClientConnection.java index 38b0ea3e..f8280954 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinClientConnection.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/connect/MixinClientConnection.java @@ -17,11 +17,11 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.connect; import com.llamalad7.mixinextras.sugar.Local; import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.event.DisconnectConnectionCallback; +import de.florianmichael.viafabricplus.event.DisconnectCallback; import de.florianmichael.viafabricplus.injection.access.IClientConnection; import de.florianmichael.viafabricplus.injection.access.IPerformanceLog; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; @@ -86,7 +86,7 @@ public abstract class MixinClientConnection extends SimpleChannelInboundHandler< } @Inject(method = "setupEncryption", at = @At("HEAD"), cancellable = true) - private void storeEncryptionCiphers(Cipher decryptionCipher, Cipher encryptionCipher, CallbackInfo ci) { + private void storeDecryptionCipher(Cipher decryptionCipher, Cipher encryptionCipher, CallbackInfo ci) { if (this.viaFabricPlus$serverVersion.isOlderThanOrEqualTo(VersionEnum.r1_6_4)) { ci.cancel(); this.viaFabricPlus$decryptionCipher = decryptionCipher; @@ -110,9 +110,9 @@ public abstract class MixinClientConnection extends SimpleChannelInboundHandler< } @Inject(method = "connect(Ljava/net/InetSocketAddress;ZLnet/minecraft/util/profiler/PerformanceLog;)Lnet/minecraft/network/ClientConnection;", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;connect(Ljava/net/InetSocketAddress;ZLnet/minecraft/network/ClientConnection;)Lio/netty/channel/ChannelFuture;", shift = At.Shift.BEFORE)) - private static void setServerVersion(InetSocketAddress address, boolean useEpoll, PerformanceLog packetSizeLog, CallbackInfoReturnable cir, @Local ClientConnection clientConnection) { + private static void setTargetVersion(InetSocketAddress address, boolean useEpoll, PerformanceLog packetSizeLog, CallbackInfoReturnable cir, @Local ClientConnection clientConnection) { if (packetSizeLog instanceof IPerformanceLog mixinPerformanceLog && mixinPerformanceLog.viaFabricPlus$getForcedVersion() != null) { - ((IClientConnection) clientConnection).viaFabricPlus$setServerVersion(mixinPerformanceLog.viaFabricPlus$getForcedVersion()); + ((IClientConnection) clientConnection).viaFabricPlus$setTargetVersion(mixinPerformanceLog.viaFabricPlus$getForcedVersion()); } } @@ -126,44 +126,54 @@ public abstract class MixinClientConnection extends SimpleChannelInboundHandler< } @Inject(method = "connect(Ljava/net/InetSocketAddress;ZLnet/minecraft/network/ClientConnection;)Lio/netty/channel/ChannelFuture;", at = @At("HEAD")) - private static void setServerVersion(InetSocketAddress address, boolean useEpoll, ClientConnection connection, CallbackInfoReturnable cir) { - if (((IClientConnection) connection).viaFabricPlus$getServerVersion() == null) { - ((IClientConnection) connection).viaFabricPlus$setServerVersion(ProtocolHack.getTargetVersion()); + private static void setTargetVersion(InetSocketAddress address, boolean useEpoll, ClientConnection connection, CallbackInfoReturnable cir) { + if (((IClientConnection) connection).viaFabricPlus$getTargetVersion() == null) { + ((IClientConnection) connection).viaFabricPlus$setTargetVersion(ProtocolHack.getTargetVersion()); } } @Redirect(method = "connect(Ljava/net/InetSocketAddress;ZLnet/minecraft/network/ClientConnection;)Lio/netty/channel/ChannelFuture;", at = @At(value = "INVOKE", target = "Lio/netty/bootstrap/Bootstrap;channel(Ljava/lang/Class;)Lio/netty/bootstrap/AbstractBootstrap;", remap = false)) - private static AbstractBootstrap applyRakNetChannelFactory(Bootstrap instance, Class channelTypeClass, @Local(argsOnly = true) ClientConnection clientConnection) { - if (VersionEnum.bedrockLatest.equals(((IClientConnection) clientConnection).viaFabricPlus$getServerVersion())) { - return instance.channelFactory(channelTypeClass == EpollSocketChannel.class ? RakChannelFactory.client(EpollDatagramChannel.class) : RakChannelFactory.client(NioDatagramChannel.class)); + private static AbstractBootstrap useRakNetChannelFactory(Bootstrap instance, Class channelTypeClass, @Local(argsOnly = true) ClientConnection clientConnection) { + if (VersionEnum.bedrockLatest.equals(((IClientConnection) clientConnection).viaFabricPlus$getTargetVersion())) { + return instance.channelFactory(channelTypeClass == EpollSocketChannel.class ? + RakChannelFactory.client(EpollDatagramChannel.class) : + RakChannelFactory.client(NioDatagramChannel.class) + ); } return instance.channel(channelTypeClass); } @Redirect(method = "connect(Ljava/net/InetSocketAddress;ZLnet/minecraft/network/ClientConnection;)Lio/netty/channel/ChannelFuture;", at = @At(value = "INVOKE", target = "Lio/netty/bootstrap/Bootstrap;connect(Ljava/net/InetAddress;I)Lio/netty/channel/ChannelFuture;")) - private static ChannelFuture applyRakNetPing(Bootstrap instance, InetAddress inetHost, int inetPort, @Local(argsOnly = true) ClientConnection clientConnection, @Local(argsOnly = true) boolean isConnecting) { - if (VersionEnum.bedrockLatest.equals(((IClientConnection) clientConnection).viaFabricPlus$getServerVersion()) && !isConnecting) { - return instance.register().syncUninterruptibly().channel().bind(new InetSocketAddress(0)).addListeners(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE, (ChannelFutureListener) f -> { - if (f.isSuccess()) { - f.channel().pipeline().replace(VLPipeline.VIABEDROCK_FRAME_ENCAPSULATION_HANDLER_NAME, ViaFabricPlusVLLegacyPipeline.VIABEDROCK_PING_ENCAPSULATION_HANDLER_NAME, new PingEncapsulationCodec(new InetSocketAddress(inetHost, inetPort))); - f.channel().pipeline().remove(VLPipeline.VIABEDROCK_PACKET_ENCAPSULATION_HANDLER_NAME); - f.channel().pipeline().remove("splitter"); - } - }); + private static ChannelFuture useRakNetPingHandlers(Bootstrap instance, InetAddress inetHost, int inetPort, @Local(argsOnly = true) ClientConnection clientConnection, @Local(argsOnly = true) boolean isConnecting) { + if (VersionEnum.bedrockLatest.equals(((IClientConnection) clientConnection).viaFabricPlus$getTargetVersion()) && !isConnecting) { + return instance.register().syncUninterruptibly().channel().bind(new InetSocketAddress(0)). + addListeners(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE, (ChannelFutureListener) f -> { + if (f.isSuccess()) { + f.channel().pipeline().replace( + VLPipeline.VIABEDROCK_FRAME_ENCAPSULATION_HANDLER_NAME, + ViaFabricPlusVLLegacyPipeline.VIABEDROCK_PING_ENCAPSULATION_HANDLER_NAME, + new PingEncapsulationCodec(new InetSocketAddress(inetHost, inetPort)) + ); + f.channel().pipeline().remove(VLPipeline.VIABEDROCK_PACKET_ENCAPSULATION_HANDLER_NAME); + f.channel().pipeline().remove("splitter"); + } + }); } return instance.connect(inetHost, inetPort); } @Inject(method = "disconnect", at = @At("RETURN")) - private void resetStorages(Text disconnectReason, CallbackInfo ci) { - DisconnectConnectionCallback.EVENT.invoker().onDisconnect(); + private void callDisconnectCallback(Text disconnectReason, CallbackInfo ci) { + DisconnectCallback.EVENT.invoker().onDisconnect(); } @Unique public void viaFabricPlus$setupPreNettyEncryption(final Cipher encryptionCipher) { - if (encryptionCipher == null) throw new IllegalStateException("Encryption cipher is null"); + if (encryptionCipher == null) { + throw new IllegalStateException("Encryption cipher is null"); + } this.encrypted = true; this.channel.pipeline().addBefore(VLLegacyPipeline.VIALEGACY_PRE_NETTY_LENGTH_REMOVER_NAME, "encrypt", new PacketEncryptor(encryptionCipher)); @@ -171,7 +181,9 @@ public abstract class MixinClientConnection extends SimpleChannelInboundHandler< @Override public void viaFabricPlus$setupPreNettyDecryption() { - if (this.viaFabricPlus$decryptionCipher == null) throw new IllegalStateException("Decryption cipher is null"); + if (this.viaFabricPlus$decryptionCipher == null) { + throw new IllegalStateException("Decryption cipher is null"); + } this.encrypted = true; this.channel.pipeline().addBefore(VLLegacyPipeline.VIALEGACY_PRE_NETTY_LENGTH_PREPENDER_NAME, "decrypt", new PacketDecryptor(this.viaFabricPlus$decryptionCipher)); @@ -188,12 +200,12 @@ public abstract class MixinClientConnection extends SimpleChannelInboundHandler< } @Override - public VersionEnum viaFabricPlus$getServerVersion() { + public VersionEnum viaFabricPlus$getTargetVersion() { return this.viaFabricPlus$serverVersion; } @Override - public void viaFabricPlus$setServerVersion(final VersionEnum serverVersion) { + public void viaFabricPlus$setTargetVersion(final VersionEnum serverVersion) { this.viaFabricPlus$serverVersion = serverVersion; } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinClientConnection_1.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/connect/MixinClientConnection_1.java similarity index 93% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinClientConnection_1.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/connect/MixinClientConnection_1.java index cc5f0be6..420c8f96 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinClientConnection_1.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/connect/MixinClientConnection_1.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.connect; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import io.netty.channel.Channel; @@ -30,7 +30,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(targets = "net.minecraft.network.ClientConnection$1") -public class MixinClientConnection_1 { +public abstract class MixinClientConnection_1 { @Final @Shadow diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinClientLoginNetworkHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/connect/MixinClientLoginNetworkHandler.java similarity index 87% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinClientLoginNetworkHandler.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/connect/MixinClientLoginNetworkHandler.java index fceebd39..a9d8e869 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinClientLoginNetworkHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/connect/MixinClientLoginNetworkHandler.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.connect; import de.florianmichael.viafabricplus.injection.access.IClientConnection; import net.minecraft.client.network.ClientLoginNetworkHandler; @@ -34,16 +34,16 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @SuppressWarnings("DataFlowIssue") @Mixin(ClientLoginNetworkHandler.class) -public class MixinClientLoginNetworkHandler { +public abstract class MixinClientLoginNetworkHandler { @Shadow @Final private ClientConnection connection; @Inject(method = "joinServerSession", at = @At("HEAD"), cancellable = true) - public void dontVerifySessionIfCracked(String serverId, CallbackInfoReturnable cir) { + public void onlyVerifySessionInOnlineMode(String serverId, CallbackInfoReturnable cir) { final IClientConnection mixinClientConnection = (IClientConnection) connection; - if (mixinClientConnection.viaFabricPlus$getServerVersion().isOlderThanOrEqualTo(VersionEnum.r1_6_4)) { + if (mixinClientConnection.viaFabricPlus$getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_6_4)) { if (!mixinClientConnection.viaFabricPlus$getUserConnection().get(ProtocolMetadataStorage.class).authenticate) { cir.setReturnValue(null); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinAddServerScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinAddServerScreen.java similarity index 74% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinAddServerScreen.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinAddServerScreen.java index 2bf419ee..c4562f8d 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinAddServerScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinAddServerScreen.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.integration; import de.florianmichael.viafabricplus.injection.access.IServerInfo; import de.florianmichael.viafabricplus.screen.common.ForceVersionScreen; @@ -38,7 +38,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(AddServerScreen.class) -public class MixinAddServerScreen extends Screen { +public abstract class MixinAddServerScreen extends Screen { @Shadow @Final @@ -61,9 +61,10 @@ public class MixinAddServerScreen extends Screen { } @Inject(method = "init", at = @At("RETURN")) - private void injectButton(CallbackInfo ci) { + private void addVersionSetterButton(CallbackInfo ci) { final VersionEnum forcedVersion = ((IServerInfo) server).viaFabricPlus$forcedVersion(); + // Restore input if the user cancels the version selection screen (or if the user is editing an existing server) if (viaFabricPlus$nameField != null && viaFabricPlus$addressField != null) { this.serverNameField.setText(viaFabricPlus$nameField); this.addressField.setText(viaFabricPlus$addressField); @@ -72,21 +73,20 @@ public class MixinAddServerScreen extends Screen { viaFabricPlus$addressField = null; } - var builder = ButtonWidget.builder(forcedVersion == null ? Text.translatable("misc.viafabricplus.addserverscreenbuttontitle") : Text.literal(forcedVersion.getName()), button -> { + // Create the button + ButtonWidget.Builder buttonBuilder = ButtonWidget.builder(forcedVersion == null ? Text.translatable("misc.viafabricplus.addserverscreenbuttontitle") : Text.literal(forcedVersion.getName()), button -> { + // Store current input in case the user cancels the version selection viaFabricPlus$nameField = serverNameField.getText(); viaFabricPlus$addressField = addressField.getText(); client.setScreen(new ForceVersionScreen(this, version -> ((IServerInfo) server).viaFabricPlus$forceVersion(version))); - }); + }).size(98, 20); - final int orientation = GeneralSettings.INSTANCE.addServerScreenButtonOrientation.getIndex(); - switch (orientation) { - case 0 -> builder = builder.position(5, 5); - case 1 -> builder = builder.position(width - (forcedVersion == null ? 150 : 98) - 5, 5); - case 2 -> builder = builder.position(5, height - 20 - 5); - case 3 -> builder = builder.position(width - (forcedVersion == null ? 150 : 98) - 5, height - 20 - 5); - } + // Set the button's position according to the configured orientation + buttonBuilder = GeneralSettings.withOrientation(buttonBuilder, GeneralSettings.INSTANCE.addServerScreenButtonOrientation.getIndex(), width, height); - this.addDrawableChild(builder.size(forcedVersion == null ? 150 : 98, 20).build()); + // Add the button to the screen + this.addDrawableChild(buttonBuilder.build()); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinDebugHud.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinDebugHud.java similarity index 55% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinDebugHud.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinDebugHud.java index de6619ec..b57d74cb 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinDebugHud.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinDebugHud.java @@ -17,14 +17,9 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.integration; -import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.ViaFabricPlus; -import de.florianmichael.viafabricplus.information.AbstractInformationGroup; -import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import de.florianmichael.viafabricplus.settings.impl.GeneralSettings; -import de.florianmichael.viafabricplus.util.ChatUtil; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.DebugHud; import org.spongepowered.asm.mixin.Mixin; @@ -36,33 +31,14 @@ import java.util.ArrayList; import java.util.List; @Mixin(DebugHud.class) -public class MixinDebugHud { +public abstract class MixinDebugHud { @Inject(method = "getLeftText", at = @At("RETURN")) public void addViaFabricPlusInformation(CallbackInfoReturnable> cir) { if (MinecraftClient.getInstance().isInSingleplayer() || !GeneralSettings.INSTANCE.showExtraInformationInDebugHud.getValue()) return; final List information = new ArrayList<>(); - if (MinecraftClient.getInstance().getNetworkHandler() != null) { - final UserConnection userConnection = ProtocolHack.getMainUserConnection(); - information.add(""); - information.add(ChatUtil.PREFIX); - - for (AbstractInformationGroup group : ViaFabricPlus.INSTANCE.getInformationSystem().getGroups()) { - if (group.getVersionRange() != null && !group.getVersionRange().contains(ProtocolHack.getTargetVersion())) continue; - - final List groupInformation = new ArrayList<>(); - try { - group.applyInformation(userConnection, groupInformation); - } catch (Exception ignored) {} - if (groupInformation.isEmpty()) continue; - - information.add(group.getVersionRange() == null ? "General" : group.getVersionRange().toString()); - information.addAll(groupInformation); - information.add(""); - } - } cir.getReturnValue().addAll(information); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinDownloadingTerrainScreenAndConnectScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinDownloadingTerrainScreenAndConnectScreen.java similarity index 62% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinDownloadingTerrainScreenAndConnectScreen.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinDownloadingTerrainScreenAndConnectScreen.java index 4d278b71..eb4dd4d2 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinDownloadingTerrainScreenAndConnectScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinDownloadingTerrainScreenAndConnectScreen.java @@ -17,8 +17,9 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.integration; +import com.viaversion.viaversion.api.connection.UserConnection; import de.florianmichael.viafabricplus.settings.impl.GeneralSettings; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import de.florianmichael.viafabricplus.util.ChatUtil; @@ -33,24 +34,36 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @SuppressWarnings("DataFlowIssue") @Mixin(targets = { "net.minecraft.client.gui.screen.DownloadingTerrainScreen", "net.minecraft.client.gui.screen.ConnectScreen" }) -public class MixinDownloadingTerrainScreenAndConnectScreen extends Screen { +public abstract class MixinDownloadingTerrainScreenAndConnectScreen extends Screen { public MixinDownloadingTerrainScreenAndConnectScreen(Text title) { super(title); } @Inject(method = "render", at = @At("RETURN")) - public void renderClassicProgress(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + private void renderClassicProgress(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { if (GeneralSettings.INSTANCE.showClassicLoadingProgressInConnectScreen.getValue()) { - if (client.getNetworkHandler() == null) return; + // Check if ViaVersion is translating + final UserConnection connection = ProtocolHack.getPlayNetworkUserConnection(); + if (connection == null) { + return; + } - final var connection = ProtocolHack.getMainUserConnection(); - if (connection == null) return; + // Check if the client is connecting to a classic server + final ClassicProgressStorage classicProgressStorage = connection.get(ClassicProgressStorage.class); + if (classicProgressStorage == null) { + return; + } - final var classicProgressStorage = connection.get(ClassicProgressStorage.class); - if (classicProgressStorage == null) return; - - context.drawCenteredTextWithShadow(client.textRenderer, ChatUtil.prefixText(classicProgressStorage.status), width / 2, height / 2 - 30, -1); + // Draw the classic loading progress + context.drawCenteredTextWithShadow( + client.textRenderer, + ChatUtil.prefixText(classicProgressStorage.status), + width / 2, + height / 2 - 30, + -1 + ); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMinecraftClient.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMinecraftClient.java similarity index 76% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMinecraftClient.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMinecraftClient.java index bf20d8cf..0cf3059f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMinecraftClient.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMinecraftClient.java @@ -17,9 +17,9 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.integration; -import de.florianmichael.viafabricplus.event.FinishMinecraftLoadCallback; +import de.florianmichael.viafabricplus.event.PostGameLoadCallback; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import net.minecraft.client.MinecraftClient; import net.minecraft.client.RunArgs; @@ -32,12 +32,14 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public abstract class MixinMinecraftClient { @Inject(method = "", at = @At("RETURN")) - public void postLoad(RunArgs args, CallbackInfo ci) { - FinishMinecraftLoadCallback.EVENT.invoker().onFinishMinecraftLoad(); + private void callPostGameLoadEvent(RunArgs args, CallbackInfo ci) { + PostGameLoadCallback.EVENT.invoker().postGameLoad(); } @Inject(method = "startIntegratedServer", at = @At("HEAD")) private void disableProtocolHack(CallbackInfo ci) { + // Set the target version to the native version when starting a singleplayer world + // This will automatically reload all the mappings and reset the target version to the forced version ProtocolHack.setTargetVersion(ProtocolHack.NATIVE_VERSION); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMultiplayerScreen.java similarity index 66% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerScreen.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMultiplayerScreen.java index a084a329..da918eed 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMultiplayerScreen.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.integration; import de.florianmichael.viafabricplus.screen.common.ProtocolSelectionScreen; import de.florianmichael.viafabricplus.settings.impl.GeneralSettings; @@ -31,24 +31,23 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(MultiplayerScreen.class) -public class MixinMultiplayerScreen extends Screen { +public abstract class MixinMultiplayerScreen extends Screen { public MixinMultiplayerScreen(Text title) { super(title); } @Inject(method = "init", at = @At("RETURN")) - public void addProtocolSelectionButton(CallbackInfo ci) { - ButtonWidget.Builder builder = ButtonWidget.builder(Text.literal("ViaFabricPlus"), button -> ProtocolSelectionScreen.INSTANCE.open(this)); + private void addProtocolSelectionButton(CallbackInfo ci) { + // Create the button + var builder = ButtonWidget.builder(Text.literal("ViaFabricPlus"), button -> + ProtocolSelectionScreen.INSTANCE.open(this)).size(98, 20); - final int orientation = GeneralSettings.INSTANCE.multiplayerScreenButtonOrientation.getIndex(); - switch (orientation) { - case 0 -> builder = builder.position(5, 5); - case 1 -> builder = builder.position(width - 98 - 5, 5); - case 2 -> builder = builder.position(5, height - 20 - 5); - case 3 -> builder = builder.position(width - 98 - 5, height - 20 - 5); - } + // Set the button's position according to the configured orientation + builder = GeneralSettings.withOrientation(builder, GeneralSettings.INSTANCE.multiplayerScreenButtonOrientation.getIndex(), width, height); - this.addDrawableChild(builder.size(98, 20).build()); + // Add the button to the screen + this.addDrawableChild(builder.build()); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerServerListPinger_1.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMultiplayerServerListPinger_1.java similarity index 72% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerServerListPinger_1.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMultiplayerServerListPinger_1.java index 797ca914..bda8e633 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerServerListPinger_1.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMultiplayerServerListPinger_1.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.integration; import com.viaversion.viaversion.api.connection.UserConnection; import de.florianmichael.viafabricplus.injection.access.IClientConnection; @@ -50,8 +50,11 @@ public abstract class MixinMultiplayerServerListPinger_1 implements ClientQueryP ClientConnection field_3774; @Inject(method = "onResponse(Lnet/minecraft/network/packet/s2c/query/QueryResponseS2CPacket;)V", at = @At("HEAD")) - public void trackTranslatingState(QueryResponseS2CPacket packet, CallbackInfo ci) { + private void trackTranslatingState(QueryResponseS2CPacket packet, CallbackInfo ci) { final UserConnection userConnection = ((IClientConnection) field_3774).viaFabricPlus$getUserConnection(); + + // If ViaVersion is translating the current connection, we track the target version, and it's state in the server info + // So we can later draw this information when hovering over the ping bar in the server list if (userConnection != null) { ((IServerInfo) field_3776).viaFabricPlus$enable(); ((IServerInfo) field_3776).viaFabricPlus$setTranslatingVersion(userConnection.getProtocolInfo().getServerProtocolVersion()); @@ -62,13 +65,20 @@ public abstract class MixinMultiplayerServerListPinger_1 implements ClientQueryP private void setProtocolVersion(CallbackInfo ci) { final boolean isCompatible; if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_6_4)) { - isCompatible = LegacyProtocolVersion.getRealProtocolVersion(((IClientConnection) this.field_3774).viaFabricPlus$getServerVersion().getVersion()) == this.field_3776.protocolVersion; + // Because of ViaVersion not supporting legacy minecraft versions where protocol ids are overlapping, ViaLegacy + // has its own protocol id offset, where realVersion = -(ViaLegacyVersion >> 2). Normally ViaVersion sends the client + // version to the client so its detection doesn't break when checking for serverVersion == clientVersion, but since + // ViaLegacy doesn't do that, we have to do it ourselves + isCompatible = LegacyProtocolVersion.getRealProtocolVersion(((IClientConnection) this.field_3774).viaFabricPlus$getTargetVersion().getVersion()) == this.field_3776.protocolVersion; } else if (ProtocolHack.getTargetVersion().equals(VersionEnum.bedrockLatest)) { - isCompatible = ((IClientConnection) this.field_3774).viaFabricPlus$getServerVersion().getVersion() - BedrockProtocolVersion.PROTOCOL_ID_OVERLAP_PREVENTION_OFFSET == this.field_3776.protocolVersion; + // Bedrock edition doesn't have a protocol id like the Java edition, ViaBedrock also has its own protocol id offset + // Which we need to remove to get the real protocol id + isCompatible = ((IClientConnection) this.field_3774).viaFabricPlus$getTargetVersion().getVersion() - BedrockProtocolVersion.PROTOCOL_ID_OVERLAP_PREVENTION_OFFSET == this.field_3776.protocolVersion; } else { return; } + // If the server is compatible with the client, we set the protocol version to the client version if (isCompatible) { this.field_3776.protocolVersion = SharedConstants.getProtocolVersion(); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerServerListWidget_ServerEntry.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMultiplayerServerListWidget_ServerEntry.java similarity index 60% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerServerListWidget_ServerEntry.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMultiplayerServerListWidget_ServerEntry.java index b0398eea..d3144a7b 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerServerListWidget_ServerEntry.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/integration/MixinMultiplayerServerListWidget_ServerEntry.java @@ -17,8 +17,10 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.integration; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import de.florianmichael.viafabricplus.injection.access.IServerInfo; import de.florianmichael.viafabricplus.settings.impl.GeneralSettings; import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen; @@ -36,25 +38,26 @@ import java.util.ArrayList; import java.util.List; @Mixin(MultiplayerServerListWidget.ServerEntry.class) -public class MixinMultiplayerServerListWidget_ServerEntry { +public abstract class MixinMultiplayerServerListWidget_ServerEntry { @Shadow @Final private ServerInfo server; - @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setMultiplayerScreenTooltip(Ljava/util/List;)V", ordinal = 0)) - public void showTranslatingInformation(MultiplayerScreen instance, List tooltip) { - final List tooltipOverwrite = new ArrayList<>(tooltip); + @WrapOperation(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;setMultiplayerScreenTooltip(Ljava/util/List;)V", ordinal = 0)) + private void drawTranslatingState(MultiplayerScreen instance, List tooltip, Operation original) { if (GeneralSettings.INSTANCE.showAdvertisedServerVersion.getValue()) { - final IServerInfo accessor = ((IServerInfo) server); - if (accessor.viaFabricPlus$enabled()) { - final var versionEnum = VersionEnum.fromProtocolId(accessor.viaFabricPlus$translatingVersion()); + final IServerInfo mixinServerInfo = ((IServerInfo) server); - tooltipOverwrite.add(Text.translatable("misc.viafabricplus.translate", versionEnum != VersionEnum.UNKNOWN ? versionEnum.getName() + " (" + versionEnum.getVersion() + ")" : accessor.viaFabricPlus$translatingVersion())); - tooltipOverwrite.add(Text.translatable("misc.viafabricplus.serverversion", server.version.getString() + " (" + server.protocolVersion + ")")); + if (mixinServerInfo.viaFabricPlus$enabled()) { + final var versionEnum = VersionEnum.fromProtocolId(mixinServerInfo.viaFabricPlus$translatingVersion()); + + tooltip.add(Text.translatable("misc.viafabricplus.translate", versionEnum != VersionEnum.UNKNOWN ? versionEnum.getName() + " (" + versionEnum.getVersion() + ")" : mixinServerInfo.viaFabricPlus$translatingVersion())); + tooltip.add(Text.translatable("misc.viafabricplus.serverversion", server.version.getString() + " (" + server.protocolVersion + ")")); } } - instance.setMultiplayerScreenTooltip(tooltipOverwrite); + + original.call(instance, tooltip); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinConnectScreen_1.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinConnectScreen_1.java similarity index 87% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinConnectScreen_1.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinConnectScreen_1.java index 0fca8664..78b3a51a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinConnectScreen_1.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinConnectScreen_1.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.per_server_version; import de.florianmichael.viafabricplus.injection.access.IServerInfo; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; @@ -30,15 +30,16 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(targets = "net.minecraft.client.gui.screen.ConnectScreen$1") -public class MixinConnectScreen_1 { +public abstract class MixinConnectScreen_1 { @Final @Shadow ServerInfo field_40415; @Inject(method = "run", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;connect(Ljava/net/InetSocketAddress;ZLnet/minecraft/network/ClientConnection;)Lio/netty/channel/ChannelFuture;")) - public void setForcedServerVersion(CallbackInfo ci) { + private void setForcedTargetVersion(CallbackInfo ci) { if (field_40415 != null) { + // Set the target version to the forced version when connecting to a server ProtocolHack.setTargetVersion(((IServerInfo) field_40415).viaFabricPlus$forcedVersion()); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerServerListPinger.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinMultiplayerServerListPinger.java similarity index 82% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerServerListPinger.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinMultiplayerServerListPinger.java index 2383f531..79df839e 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinMultiplayerServerListPinger.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinMultiplayerServerListPinger.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.per_server_version; import com.llamalad7.mixinextras.sugar.Local; import de.florianmichael.viafabricplus.injection.access.IPerformanceLog; @@ -40,10 +40,14 @@ public abstract class MixinMultiplayerServerListPinger { private ClientConnection setForcedVersion(InetSocketAddress address, boolean useEpoll, PerformanceLog packetSizeLog, @Local ServerInfo serverInfo) { final VersionEnum forcedVersion = ((IServerInfo) serverInfo).viaFabricPlus$forcedVersion(); if (forcedVersion != null) { + // We use the PerformanceLog field to store the forced version since it's always null when pinging a server + // So we can create a dummy instance, store the forced version in it and later destroy the instance again + // To avoid any side effects, we also support cases where a mod is also creating a PerformanceLog instance if (packetSizeLog == null) { packetSizeLog = new PerformanceLog(); } + // Attach the forced version to the PerformanceLog instance ((IPerformanceLog) packetSizeLog).viaFabricPlus$setForcedVersion(forcedVersion); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinPerformanceLog.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinPerformanceLog.java similarity index 95% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinPerformanceLog.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinPerformanceLog.java index a33d52d8..96fc537e 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinPerformanceLog.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinPerformanceLog.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.per_server_version; import de.florianmichael.viafabricplus.injection.access.IPerformanceLog; import net.minecraft.util.profiler.PerformanceLog; diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinServerInfo.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinServerInfo.java similarity index 89% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinServerInfo.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinServerInfo.java index d753c324..691b857e 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinServerInfo.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/per_server_version/MixinServerInfo.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.base.per_server_version; import de.florianmichael.viafabricplus.injection.access.IServerInfo; import net.minecraft.client.network.ServerInfo; @@ -33,7 +33,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @Mixin(ServerInfo.class) -public class MixinServerInfo implements IServerInfo { +public abstract class MixinServerInfo implements IServerInfo { @Shadow public String name; @@ -52,8 +52,10 @@ public class MixinServerInfo implements IServerInfo { } @Inject(method = "toNbt", at = @At("TAIL"), locals = LocalCapture.CAPTURE_FAILHARD) - public void saveForcedVersion(CallbackInfoReturnable cir, NbtCompound nbtCompound) { - if (viaFabricPlus$forcedVersion == null) return; + private void saveForcedVersion(CallbackInfoReturnable cir, NbtCompound nbtCompound) { + if (viaFabricPlus$forcedVersion == null) { + return; + } nbtCompound.putInt("viafabricplus_forcedversion", viaFabricPlus$forcedVersion.getOriginalVersion()); } @@ -71,7 +73,7 @@ public class MixinServerInfo implements IServerInfo { } @Inject(method = "copyFrom", at = @At("RETURN")) - public void trackForcedVersion(ServerInfo serverInfo, CallbackInfo ci) { + private void syncForcedVersion(ServerInfo serverInfo, CallbackInfo ci) { viaFabricPlus$forceVersion(((IServerInfo) serverInfo).viaFabricPlus$forcedVersion()); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/classic4j/MixinCCAuthenticationResponse.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/classic4j/MixinCCAuthenticationResponse.java similarity index 88% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/classic4j/MixinCCAuthenticationResponse.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/classic4j/MixinCCAuthenticationResponse.java index bab44f84..3c90a286 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/classic4j/MixinCCAuthenticationResponse.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/classic4j/MixinCCAuthenticationResponse.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.classic4j; +package de.florianmichael.viafabricplus.injection.mixin.compat.classic4j; import de.florianmichael.classic4j.model.classicube.CCAuthenticationResponse; import de.florianmichael.classic4j.model.classicube.CCError; @@ -27,10 +27,11 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(value = CCAuthenticationResponse.class, remap = false) -public class MixinCCAuthenticationResponse { +public abstract class MixinCCAuthenticationResponse { + // Classic4J doesn't support translations, so we have to map them manually @Redirect(method = "getErrorDisplay", at = @At(value = "FIELD", target = "Lde/florianmichael/classic4j/model/classicube/CCError;description:Ljava/lang/String;")) - public String mapTranslations(CCError instance) { + private String mapTranslations(CCError instance) { switch (instance) { case TOKEN -> Text.translatable("classicube.viafabricplus.error.token").getString(); case USERNAME -> Text.translatable("classicube.viafabricplus.error.username").getString(); @@ -41,4 +42,5 @@ public class MixinCCAuthenticationResponse { return instance.description; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinTextFieldWidget.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/classic4j/MixinTextFieldWidget.java similarity index 81% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinTextFieldWidget.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/classic4j/MixinTextFieldWidget.java index 667fc0d4..9b8e1420 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinTextFieldWidget.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/classic4j/MixinTextFieldWidget.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.compat.classic4j; import de.florianmichael.viafabricplus.injection.access.ITextFieldWidget; import net.minecraft.SharedConstants; @@ -27,25 +27,31 @@ import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +/** + * ClassicCube allows to use forbidden characters which the game doesn't allow in passwords, so we have to bypass this check + * in order to allow the user to enter their password. + */ @Mixin(TextFieldWidget.class) -public class MixinTextFieldWidget implements ITextFieldWidget { +public abstract class MixinTextFieldWidget implements ITextFieldWidget { @Unique private boolean viaFabricPlus$forbiddenCharactersUnlocked = false; @Redirect(method = "charTyped", at = @At(value = "INVOKE", target = "Lnet/minecraft/SharedConstants;isValidChar(C)Z")) - public boolean allowForbiddenCharacters(char c) { + private boolean allowForbiddenCharacters(char c) { if (this.viaFabricPlus$forbiddenCharactersUnlocked) { return true; } + return SharedConstants.isValidChar(c); } @Redirect(method = "write", at = @At(value = "INVOKE", target = "Lnet/minecraft/SharedConstants;stripInvalidChars(Ljava/lang/String;)Ljava/lang/String;")) - public String allowForbiddenCharacters(String string) { + private String allowForbiddenCharacters(String string) { if (this.viaFabricPlus$forbiddenCharactersUnlocked) { return string; } + return SharedConstants.stripInvalidChars(string); } @@ -53,4 +59,5 @@ public class MixinTextFieldWidget implements ITextFieldWidget { public void viaFabricPlus$unlockForbiddenCharacters() { this.viaFabricPlus$forbiddenCharactersUnlocked = true; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/ipnext/MixinAutoRefillHandler_ItemSlotMonitor.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/ipnext/MixinAutoRefillHandler_ItemSlotMonitor.java index aff6b340..8012a594 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/ipnext/MixinAutoRefillHandler_ItemSlotMonitor.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/ipnext/MixinAutoRefillHandler_ItemSlotMonitor.java @@ -36,7 +36,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; */ @Pseudo @Mixin(targets = "org.anti_ad.mc.ipnext.event.AutoRefillHandler$ItemSlotMonitor", remap = false) -public class MixinAutoRefillHandler_ItemSlotMonitor { +public abstract class MixinAutoRefillHandler_ItemSlotMonitor { @Shadow public int currentSlotId; diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/jsonwebtoken/MixinClasses.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/jsonwebtoken/MixinClasses.java similarity index 93% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/jsonwebtoken/MixinClasses.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/jsonwebtoken/MixinClasses.java index 1adcec57..16676673 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/jsonwebtoken/MixinClasses.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/jsonwebtoken/MixinClasses.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.jsonwebtoken; +package de.florianmichael.viafabricplus.injection.mixin.compat.jsonwebtoken; import io.jsonwebtoken.lang.Classes; import org.spongepowered.asm.mixin.Mixin; @@ -30,7 +30,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; * So we have to change all services usages by using the normal Java API */ @Mixin(value = Classes.class, remap = false) -public class MixinClasses { +public abstract class MixinClasses { @Inject(method = "forName", at = @At("HEAD"), cancellable = true) private static void removeServicesSupport(String fqcn, CallbackInfoReturnable> cir) throws ClassNotFoundException { diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/jsonwebtoken/MixinDefaultJwtParserBuilder.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/jsonwebtoken/MixinDefaultJwtParserBuilder.java similarity index 92% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/jsonwebtoken/MixinDefaultJwtParserBuilder.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/jsonwebtoken/MixinDefaultJwtParserBuilder.java index 4433396b..1da9e02d 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/jsonwebtoken/MixinDefaultJwtParserBuilder.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/compat/jsonwebtoken/MixinDefaultJwtParserBuilder.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.jsonwebtoken; +package de.florianmichael.viafabricplus.injection.mixin.compat.jsonwebtoken; import io.jsonwebtoken.gson.io.GsonDeserializer; import io.jsonwebtoken.impl.DefaultJwtParserBuilder; @@ -30,7 +30,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; * So we have to change all services usages by using the normal Java API */ @Mixin(value = DefaultJwtParserBuilder.class, remap = false) -public class MixinDefaultJwtParserBuilder { +public abstract class MixinDefaultJwtParserBuilder { @Redirect(method = "build()Lio/jsonwebtoken/JwtParser;", at = @At(value = "INVOKE", target = "Lio/jsonwebtoken/impl/lang/Services;loadFirst(Ljava/lang/Class;)Ljava/lang/Object;")) public Object removeServicesSupport(Class result) { diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinKeyPairResponse.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinKeyPairResponse.java index 2f6c0aef..ed871439 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinKeyPairResponse.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinKeyPairResponse.java @@ -20,25 +20,23 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.authlib; import com.mojang.authlib.yggdrasil.response.KeyPairResponse; -import de.florianmichael.viafabricplus.injection.access.IKeyPairResponse; +import de.florianmichael.viafabricplus.injection.access.ILegacyKeySignatureStorage; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; -import java.nio.ByteBuffer; - @Mixin(value = KeyPairResponse.class, remap = false) -public class MixinKeyPairResponse implements IKeyPairResponse { +public abstract class MixinKeyPairResponse implements ILegacyKeySignatureStorage { @Unique - private ByteBuffer viaFabricPlus$legacyKeySignature; + private byte[] viaFabricPlus$legacyKeySignature; @Override - public ByteBuffer viafabricplus$getLegacyPublicKeySignature() { + public byte[] viafabricplus$getLegacyPublicKeySignature() { return this.viaFabricPlus$legacyKeySignature; } @Override - public void viafabricplus$setLegacyPublicKeySignature(ByteBuffer signature) { + public void viafabricplus$setLegacyPublicKeySignature(byte[] signature) { this.viaFabricPlus$legacyKeySignature = signature; } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinYggdrasilUserApiService.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinYggdrasilUserApiService.java index 2ce4be53..55f79cfd 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinYggdrasilUserApiService.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/authlib/MixinYggdrasilUserApiService.java @@ -22,8 +22,8 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.authlib; import com.mojang.authlib.minecraft.client.MinecraftClient; import com.mojang.authlib.yggdrasil.YggdrasilUserApiService; import com.mojang.authlib.yggdrasil.response.KeyPairResponse; -import de.florianmichael.viafabricplus.definition.model.KeyPairResponse1_19_0; -import de.florianmichael.viafabricplus.injection.access.IKeyPairResponse; +import de.florianmichael.viafabricplus.fixes.model.KeyPairResponse1_19_0; +import de.florianmichael.viafabricplus.injection.access.ILegacyKeySignatureStorage; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -34,23 +34,34 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.net.URL; @Mixin(value = YggdrasilUserApiService.class, remap = false) -public class MixinYggdrasilUserApiService { +public abstract class MixinYggdrasilUserApiService { @Shadow @Final private MinecraftClient minecraftClient; @Shadow @Final private URL routeKeyPair; @Inject(method = "getKeyPair", at = @At("HEAD"), cancellable = true) - public void storeLegacyPublicKeySignature(CallbackInfoReturnable cir) { - final var response = minecraftClient.post(routeKeyPair, KeyPairResponse1_19_0.class); - if (response == null) { // the response can't be null for us since we are constructing a new object with it. + private void storeLegacyPublicKeySignature(CallbackInfoReturnable cir) { + final KeyPairResponse1_19_0 response = minecraftClient.post(routeKeyPair, KeyPairResponse1_19_0.class); + + // the response can't be null for us since we are constructing a new object with it. + if (response == null) { cir.setReturnValue(null); return; } - final var keyPairResponse = new KeyPairResponse(response.keyPair(), response.publicKeySignatureV2(), response.expiresAt(), response.refreshedAfter()); - ((IKeyPairResponse) (Object) keyPairResponse).viafabricplus$setLegacyPublicKeySignature(response.publicKeySignature()); + // create the original KeyPairResponse object with the data + final KeyPairResponse keyPairResponse = new KeyPairResponse( + response.keyPair(), + response.publicKeySignatureV2(), + response.expiresAt(), + response.refreshedAfter() + ); + + // set the legacy public key signature in the object + ((ILegacyKeySignatureStorage) (Object) keyPairResponse).viafabricplus$setLegacyPublicKeySignature(response.publicKeySignature().array()); cir.setReturnValue(keyPairResponse); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java index 291a0378..2b2162ca 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinClientPlayerInteractionManager.java @@ -25,7 +25,7 @@ import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2; import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4; import de.florianmichael.viafabricplus.ViaFabricPlus; -import de.florianmichael.viafabricplus.definition.ClientPlayerInteractionManager1_18_2; +import de.florianmichael.viafabricplus.fixes.ClientPlayerInteractionManager1_18_2; import de.florianmichael.viafabricplus.injection.access.IClientConnection; import de.florianmichael.viafabricplus.injection.access.IScreenHandler; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; @@ -84,7 +84,7 @@ public abstract class MixinClientPlayerInteractionManager { private List viaFabricPlus$oldItems; @Inject(method = "breakBlock", at = @At("TAIL")) - public void resetBlockBreaking(BlockPos pos, CallbackInfoReturnable cir) { + private void resetBlockBreaking(BlockPos pos, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_14_3)) { this.currentBreakingPos = new BlockPos(this.currentBreakingPos.getX(), -1, this.currentBreakingPos.getZ()); } @@ -152,12 +152,12 @@ public abstract class MixinClientPlayerInteractionManager { } @Inject(method = "interactItem", at = @At("HEAD")) - public void trackLastUsedItem(PlayerEntity player, Hand hand, CallbackInfoReturnable cir) { + private void trackLastUsedItem(PlayerEntity player, Hand hand, CallbackInfoReturnable cir) { ViaFabricPlusHandItemProvider.lastUsedItem = player.getStackInHand(hand).copy(); } @Inject(method = "interactBlock", at = @At("HEAD")) - public void trackLastUsedBlock(ClientPlayerEntity player, Hand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { + private void trackLastUsedBlock(ClientPlayerEntity player, Hand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { ViaFabricPlusHandItemProvider.lastUsedItem = player.getStackInHand(hand).copy(); } @@ -165,7 +165,7 @@ public abstract class MixinClientPlayerInteractionManager { private ActionResult viaFabricPlus$actionResult; @Inject(method = "interactBlock", at = @At("HEAD"), cancellable = true) - public void cacheActionResult(ClientPlayerEntity player, Hand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { + private void cacheActionResult(ClientPlayerEntity player, Hand hand, BlockHitResult hitResult, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { this.viaFabricPlus$actionResult = this.interactBlockInternal(player, hand, hitResult); @@ -176,7 +176,7 @@ public abstract class MixinClientPlayerInteractionManager { } @Redirect(method = "method_41933", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;interactBlockInternal(Lnet/minecraft/client/network/ClientPlayerEntity;Lnet/minecraft/util/Hand;Lnet/minecraft/util/hit/BlockHitResult;)Lnet/minecraft/util/ActionResult;")) - public ActionResult provideCachedResult(ClientPlayerInteractionManager instance, ClientPlayerEntity player, Hand hand, BlockHitResult hitResult) { + private ActionResult provideCachedResult(ClientPlayerInteractionManager instance, ClientPlayerEntity player, Hand hand, BlockHitResult hitResult) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { return this.viaFabricPlus$actionResult; } @@ -184,16 +184,17 @@ public abstract class MixinClientPlayerInteractionManager { } @Inject(method = "sendSequencedPacket", at = @At("HEAD")) - public void handleBlockAcknowledgements(ClientWorld world, SequencedPacketCreator packetCreator, CallbackInfo ci) { + private void handleBlockAcknowledgements(ClientWorld world, SequencedPacketCreator packetCreator, CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isBetweenInclusive(VersionEnum.r1_14_4, VersionEnum.r1_18_2) && packetCreator instanceof PlayerActionC2SPacket playerActionC2SPacket) { ClientPlayerInteractionManager1_18_2.trackBlockAction(playerActionC2SPacket.getAction(), playerActionC2SPacket.getPos()); } } @Inject(method = "getBlockBreakingProgress", at = @At("HEAD"), cancellable = true) - public void changeCalculation(CallbackInfoReturnable cir) { + private void changeCalculation(CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_4)) { cir.setReturnValue((int)(this.currentBreakingProgress * 10.0F) - 1); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinDrawContext.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinDrawContext.java index 5be5b54a..e4f19fa1 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinDrawContext.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinDrawContext.java @@ -28,15 +28,16 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(DrawContext.class) -public class MixinDrawContext { +public abstract class MixinDrawContext { @Redirect(method = "drawItemInSlot(Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/item/ItemStack;IILjava/lang/String;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;drawText(Lnet/minecraft/client/font/TextRenderer;Ljava/lang/String;IIIZ)I")) - public int recolor(DrawContext instance, TextRenderer textRenderer, String text, int x, int y, int color, boolean shadow) { + private int recolor(DrawContext instance, TextRenderer textRenderer, String text, int x, int y, int color, boolean shadow) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_10) && text.startsWith("-")) { color = -43213; // red } return instance.drawText(textRenderer, text, x, y, color, shadow); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinFontStorage.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinFontStorage.java index cc8312c5..6cf3169d 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinFontStorage.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinFontStorage.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft; -import de.florianmichael.viafabricplus.definition.model.BuiltinEmptyGlyph1_12_2; +import de.florianmichael.viafabricplus.fixes.model.BuiltinEmptyGlyph1_12_2; import de.florianmichael.viafabricplus.mappings.CharacterMappings; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import de.florianmichael.viafabricplus.settings.impl.VisualSettings; @@ -60,7 +60,7 @@ public abstract class MixinFontStorage { private boolean viaFabricPlus$obfuscation; @Inject(method = "setFonts", at = @At("HEAD")) - public void trackForbiddenCharacters(List fonts, CallbackInfo ci) { + private void trackForbiddenCharacters(List fonts, CallbackInfo ci) { viaFabricPlus$forbiddenCharacters = CharacterMappings.getForbiddenCharactersForID(this.id); } @@ -83,7 +83,7 @@ public abstract class MixinFontStorage { } @Inject(method = "findGlyph", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/Font;getGlyph(I)Lnet/minecraft/client/font/Glyph;"), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true) - public void injectFindGlyph(int codePoint, CallbackInfoReturnable cir, Glyph glyph, Iterator var3, Font font) { + private void injectFindGlyph(int codePoint, CallbackInfoReturnable cir, Glyph glyph, Iterator var3, Font font) { if (!this.id.getNamespace().equals("minecraft")) return; if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_4)) { @@ -96,7 +96,7 @@ public abstract class MixinFontStorage { } @Inject(method = "findGlyphRenderer", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/font/Font;getGlyph(I)Lnet/minecraft/client/font/Glyph;"), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true) - public void injectFindGlyphRenderer(int codePoint, CallbackInfoReturnable cir, Iterator var2, Font font) { + private void injectFindGlyphRenderer(int codePoint, CallbackInfoReturnable cir, Iterator var2, Font font) { if (!this.id.getNamespace().equals("minecraft")) return; if (!viaFabricPlus$obfuscation && ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_4)) { @@ -114,12 +114,12 @@ public abstract class MixinFontStorage { */ @Inject(method = "getObfuscatedGlyphRenderer", at = @At("HEAD")) - public void trackObfuscationState(Glyph glyph, CallbackInfoReturnable cir) { + private void trackObfuscationState(Glyph glyph, CallbackInfoReturnable cir) { viaFabricPlus$obfuscation = true; } @Inject(method = "getGlyphRenderer(I)Lnet/minecraft/client/font/GlyphRenderer;", at = @At("RETURN")) - public void revertObfuscationState(int codePoint, CallbackInfoReturnable cir) { + private void revertObfuscationState(int codePoint, CallbackInfoReturnable cir) { viaFabricPlus$obfuscation = false; } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java index 0599afc6..663ba674 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinMinecraftClient.java @@ -63,7 +63,7 @@ public abstract class MixinMinecraftClient { @WrapWithCondition(method = "doItemUse", slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;interactItem(Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/util/Hand;)Lnet/minecraft/util/ActionResult;")), at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/item/HeldItemRenderer;resetEquipProgress(Lnet/minecraft/util/Hand;)V", ordinal = 0)) - public boolean removeEquipProgressReset(HeldItemRenderer instance, Hand hand) { + private boolean removeEquipProgressReset(HeldItemRenderer instance, Hand hand) { return ProtocolHack.getTargetVersion().isNewerThan(VersionEnum.r1_8) || !(player.getStackInHand(hand).getItem() instanceof SwordItem); } @@ -79,7 +79,7 @@ public abstract class MixinMinecraftClient { } @ModifyExpressionValue(method = "handleBlockBreaking", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isUsingItem()Z")) - public boolean allowBlockBreakAndItemUsageAtTheSameTime(boolean original) { + private boolean allowBlockBreakAndItemUsageAtTheSameTime(boolean original) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_7_6tor1_7_10)) { return false; } @@ -87,7 +87,7 @@ public abstract class MixinMinecraftClient { } @Redirect(method = "tick", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;attackCooldown:I", ordinal = 1)) - public int unwrapOperation(MinecraftClient instance) { + private int unwrapOperation(MinecraftClient instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { return 0; } @@ -95,7 +95,7 @@ public abstract class MixinMinecraftClient { } @Inject(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;handleInputEvents()V", shift = At.Shift.BEFORE)) - public void updateCooldown(CallbackInfo ci) { + private void updateCooldown(CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { if (this.attackCooldown > 0) { --this.attackCooldown; @@ -112,7 +112,7 @@ public abstract class MixinMinecraftClient { @SuppressWarnings("ConstantConditions") @Inject(method = "tick", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;", ordinal = 4, shift = At.Shift.BEFORE)) - public void injectTick(CallbackInfo ci) { + private void injectTick(CallbackInfo ci) { if (!DebugSettings.INSTANCE.executeInputsInSync.isEnabled()) { return; } @@ -128,7 +128,7 @@ public abstract class MixinMinecraftClient { @Inject(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;hasRidingInventory()Z")) private void onInventoryKeyPressed(CallbackInfo ci) { if (getNetworkHandler() != null && DebugSettings.INSTANCE.sendOpenInventoryPacket.isEnabled()) { - final UserConnection userConnection = ProtocolHack.getMainUserConnection(); + final UserConnection userConnection = ProtocolHack.getPlayNetworkUserConnection(); if (userConnection != null && userConnection.getProtocolInfo().getPipeline().contains(Protocol1_12To1_11_1.class)) { final PacketWrapper clientStatus = PacketWrapper.create(ServerboundPackets1_9_3.CLIENT_STATUS, userConnection); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPendingUpdateManager.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPendingUpdateManager.java index 8e973125..330cecc0 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPendingUpdateManager.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPendingUpdateManager.java @@ -27,12 +27,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(PendingUpdateManager.class) -public class MixinPendingUpdateManager { +public abstract class MixinPendingUpdateManager { @Inject(method = "incrementSequence", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/PendingUpdateManager;pendingSequence:Z", shift = At.Shift.BEFORE), cancellable = true) - public void injectIncrementSequence(CallbackInfoReturnable cir) { + private void injectIncrementSequence(CallbackInfoReturnable cir) { if (DebugSettings.INSTANCE.disableSequencing.isEnabled()) { cir.setReturnValue((PendingUpdateManager) (Object) this); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPlayerEntityRenderer.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPlayerEntityRenderer.java index dd921e0d..bef8fad6 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPlayerEntityRenderer.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPlayerEntityRenderer.java @@ -33,7 +33,7 @@ import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(PlayerEntityRenderer.class) -public class MixinPlayerEntityRenderer { +public abstract class MixinPlayerEntityRenderer { @Inject(method = "getPositionOffset*", at = @At("RETURN"), cancellable = true) private void injectGetPositionOffset(AbstractClientPlayerEntity player, float delta, CallbackInfoReturnable ci) { @@ -49,4 +49,5 @@ public class MixinPlayerEntityRenderer { private boolean redirectGetPositionOffset(AbstractClientPlayerEntity player) { return (ProtocolHack.getTargetVersion().isNewerThan(VersionEnum.r1_11_1to1_11_2)) && player.isInSneakingPose(); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPlayerPublicKey_PublicKeyData.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPlayerPublicKey_PublicKeyData.java index 743dda41..b15ab842 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPlayerPublicKey_PublicKeyData.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinPlayerPublicKey_PublicKeyData.java @@ -19,26 +19,25 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft; -import de.florianmichael.viafabricplus.injection.access.IPublicKeyData; +import de.florianmichael.viafabricplus.injection.access.ILegacyKeySignatureStorage; import net.minecraft.network.encryption.PlayerPublicKey; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; -import java.nio.ByteBuffer; - @Mixin(PlayerPublicKey.PublicKeyData.class) -public class MixinPlayerPublicKey_PublicKeyData implements IPublicKeyData { +public abstract class MixinPlayerPublicKey_PublicKeyData implements ILegacyKeySignatureStorage { @Unique - private ByteBuffer viaFabricPlus$v1_key; + private byte[] viaFabricPlus$legacyKeySignature; @Override - public ByteBuffer viaFabricPlus$getV1Key() { - return viaFabricPlus$v1_key; + public byte[] viafabricplus$getLegacyPublicKeySignature() { + return this.viaFabricPlus$legacyKeySignature; } @Override - public void viaFabricPlus$setV1Key(ByteBuffer byteBuffer) { - this.viaFabricPlus$v1_key = byteBuffer; + public void viafabricplus$setLegacyPublicKeySignature(byte[] signature) { + this.viaFabricPlus$legacyKeySignature = signature; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinProfileKeysImpl.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinProfileKeysImpl.java index 0e92f423..b139cd6d 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinProfileKeysImpl.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinProfileKeysImpl.java @@ -20,8 +20,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft; import com.mojang.authlib.yggdrasil.response.KeyPairResponse; -import de.florianmichael.viafabricplus.injection.access.IKeyPairResponse; -import de.florianmichael.viafabricplus.injection.access.IPublicKeyData; +import de.florianmichael.viafabricplus.injection.access.ILegacyKeySignatureStorage; import net.minecraft.client.session.ProfileKeysImpl; import net.minecraft.network.encryption.PlayerPublicKey; import org.spongepowered.asm.mixin.Mixin; @@ -30,10 +29,11 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ProfileKeysImpl.class) -public class MixinProfileKeysImpl { +public abstract class MixinProfileKeysImpl { @Inject(method = "decodeKeyPairResponse", at = @At("RETURN")) private static void trackLegacyKey(KeyPairResponse keyPairResponse, CallbackInfoReturnable cir) { - ((IPublicKeyData) (Object) cir.getReturnValue()).viaFabricPlus$setV1Key(((IKeyPairResponse) (Object) keyPairResponse).viafabricplus$getLegacyPublicKeySignature()); + ((ILegacyKeySignatureStorage) (Object) cir.getReturnValue()).viafabricplus$setLegacyPublicKeySignature(((ILegacyKeySignatureStorage) (Object) keyPairResponse).viafabricplus$getLegacyPublicKeySignature()); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinServerResourcePackProvider.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinServerResourcePackProvider.java index 2a9f9f9c..930bca3f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinServerResourcePackProvider.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinServerResourcePackProvider.java @@ -43,7 +43,7 @@ import java.util.Locale; import java.util.Map; @Mixin(ServerResourcePackProvider.class) -public class MixinServerResourcePackProvider { +public abstract class MixinServerResourcePackProvider { @Unique private File viaFabricPlus$trackedFile; @@ -68,12 +68,12 @@ public class MixinServerResourcePackProvider { } @Inject(method = "verifyFile", at = @At("HEAD")) - public void keepFile(String expectedSha1, File file, CallbackInfoReturnable cir) { + private void keepFile(String expectedSha1, File file, CallbackInfoReturnable cir) { viaFabricPlus$trackedFile = file; } @Redirect(method = "verifyFile", at = @At(value = "INVOKE", target = "Lcom/google/common/hash/HashCode;toString()Ljava/lang/String;", remap = false)) - public String revertHashAlgorithm(HashCode instance) { + private String revertHashAlgorithm(HashCode instance) { try { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { //noinspection deprecation @@ -87,10 +87,11 @@ public class MixinServerResourcePackProvider { } @Redirect(method = "verifyFile", at = @At(value = "INVOKE", target = "Ljava/lang/String;toLowerCase(Ljava/util/Locale;)Ljava/lang/String;")) - public String disableIgnoreCase(String instance, Locale locale) { + private String disableIgnoreCase(String instance, Locale locale) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { return instance; } return instance.toLowerCase(locale); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinStringHelper.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinStringHelper.java index 6121c866..67241a17 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinStringHelper.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinStringHelper.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft; -import de.florianmichael.viafabricplus.definition.ClientsideFixes; +import de.florianmichael.viafabricplus.fixes.ClientsideFixes; import net.minecraft.client.MinecraftClient; import net.minecraft.util.StringHelper; import org.spongepowered.asm.mixin.Mixin; @@ -27,7 +27,7 @@ import org.spongepowered.asm.mixin.injection.Constant; import org.spongepowered.asm.mixin.injection.ModifyConstant; @Mixin(StringHelper.class) -public class MixinStringHelper { +public abstract class MixinStringHelper { @ModifyConstant(method = "truncateChat", constant = @Constant(intValue = 256)) private static int expandChatLength(int constant) { @@ -37,4 +37,5 @@ public class MixinStringHelper { return ClientsideFixes.getCurrentChatLimit(); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinTextRenderer.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinTextRenderer.java index 50de5e50..3dc90eee 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinTextRenderer.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/MixinTextRenderer.java @@ -54,7 +54,7 @@ public abstract class MixinTextRenderer { @Shadow public abstract int getWidth(OrderedText text); @Inject(method = "draw(Ljava/lang/String;FFIZLorg/joml/Matrix4f;Lnet/minecraft/client/render/VertexConsumerProvider;Lnet/minecraft/client/font/TextRenderer$TextLayerType;IIZ)I", at = @At("HEAD"), cancellable = true) - public void allowNewLines_String(String text, float x, float y, int color, boolean shadow, Matrix4f matrix, VertexConsumerProvider vertexConsumers, TextRenderer.TextLayerType layerType, int backgroundColor, int light, boolean rightToLeft, CallbackInfoReturnable cir) { + private void allowNewLines_String(String text, float x, float y, int color, boolean shadow, Matrix4f matrix, VertexConsumerProvider vertexConsumers, TextRenderer.TextLayerType layerType, int backgroundColor, int light, boolean rightToLeft, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion() == VersionEnum.bedrockLatest) { final List lines = wrapLines(StringVisitable.plain(rightToLeft ? this.mirror(text) : text), Integer.MAX_VALUE); if (lines.size() > 1) { @@ -68,7 +68,7 @@ public abstract class MixinTextRenderer { } @Inject(method = "draw(Lnet/minecraft/text/Text;FFIZLorg/joml/Matrix4f;Lnet/minecraft/client/render/VertexConsumerProvider;Lnet/minecraft/client/font/TextRenderer$TextLayerType;II)I", at = @At("HEAD"), cancellable = true) - public void allowNewLines_Text(Text text, float x, float y, int color, boolean shadow, Matrix4f matrix, VertexConsumerProvider vertexConsumers, TextRenderer.TextLayerType layerType, int backgroundColor, int light, CallbackInfoReturnable cir) { + private void allowNewLines_Text(Text text, float x, float y, int color, boolean shadow, Matrix4f matrix, VertexConsumerProvider vertexConsumers, TextRenderer.TextLayerType layerType, int backgroundColor, int light, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion() == VersionEnum.bedrockLatest) { final List lines = wrapLines(text, Integer.MAX_VALUE); if (lines.size() > 1) { @@ -82,7 +82,7 @@ public abstract class MixinTextRenderer { } @Inject(method = "getWidth(Lnet/minecraft/text/StringVisitable;)I", at = @At("HEAD"), cancellable = true) - public void allowNewLines_getWidth(StringVisitable text, CallbackInfoReturnable cir) { + private void allowNewLines_getWidth(StringVisitable text, CallbackInfoReturnable cir) { if (MinecraftClient.getInstance().world != null && ProtocolHack.getTargetVersion() == VersionEnum.bedrockLatest) { int i = 0; for (OrderedText wrapLine : this.wrapLines(text, Integer.MAX_VALUE)) { @@ -91,4 +91,5 @@ public abstract class MixinTextRenderer { cir.setReturnValue(MathHelper.ceil(i)); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock.java index 2b5e7b08..f19d6100 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock.java @@ -31,10 +31,10 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(AbstractBlock.class) -public class MixinAbstractBlock { +public abstract class MixinAbstractBlock { @Inject(method = "calcBlockBreakingDelta", at = @At("HEAD"), cancellable = true) - public void fixLegacyMiningSpeed(BlockState state, PlayerEntity player, BlockView world, BlockPos pos, CallbackInfoReturnable cir) { + private void changeMiningSpeedCalculation(BlockState state, PlayerEntity player, BlockView world, BlockPos pos, CallbackInfoReturnable cir) { if (DebugSettings.INSTANCE.legacyMiningSpeeds.isEnabled()) { final float hardness = state.getHardness(world, pos); if (hardness == -1.0F) { @@ -48,4 +48,5 @@ public class MixinAbstractBlock { } } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock_AbstractBlockState.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock_AbstractBlockState.java index 7b8f62b6..7faa9cc9 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock_AbstractBlockState.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractBlock_AbstractBlockState.java @@ -57,7 +57,7 @@ public abstract class MixinAbstractBlock_AbstractBlockState { } @Inject(method = "getHardness", at = @At("RETURN"), cancellable = true) - public void changeHardness(BlockView world, BlockPos pos, CallbackInfoReturnable cir) { + private void changeHardness(BlockView world, BlockPos pos, CallbackInfoReturnable cir) { final Block block = this.getBlock(); if (block.equals(Blocks.OBSIDIAN)) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.b1_8tob1_8_1)) { @@ -79,4 +79,5 @@ public abstract class MixinAbstractBlock_AbstractBlockState { } } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractSignBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractSignBlock.java index cfe643a7..c8d764fa 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractSignBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAbstractSignBlock.java @@ -42,15 +42,23 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class MixinAbstractSignBlock { @Inject(method = "onUse", at = @At("HEAD"), cancellable = true) - private void alwaysReturnSuccess(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit, CallbackInfoReturnable cir) { - if (!world.isClient) return; + private void changeInteractionCalculation(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit, CallbackInfoReturnable cir) { + if (!world.isClient) { + return; + } if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_14_4)) { + // <= 1.14.4 doesn't have any sign interactions. + cir.setReturnValue(ActionResult.SUCCESS); } else if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_4)) { + // Removes the isWaxed() condition and reverts the interaction changes from 1.19.4 -> 1.20 when signs + // got a front and back side. + final ItemStack itemStack = player.getStackInHand(hand); final Item item = itemStack.getItem(); final boolean isSuccess = (item instanceof DyeItem || itemStack.isOf(Items.GLOW_INK_SAC) || itemStack.isOf(Items.INK_SAC)) && player.canModifyBlocks(); + cir.setReturnValue(isSuccess ? ActionResult.SUCCESS : ActionResult.CONSUME); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAnvilBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAnvilBlock.java index fdaa85cc..d34a1bd6 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAnvilBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinAnvilBlock.java @@ -36,13 +36,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(AnvilBlock.class) -public class MixinAnvilBlock extends FallingBlock { +public abstract class MixinAnvilBlock extends FallingBlock { @Unique - private final static VoxelShape viaFabricPlus$x_axis_shape_r1_12_2 = Block.createCuboidShape(0, 0, 2, 16, 16, 14); + private static final VoxelShape viaFabricPlus$x_axis_shape_r1_12_2 = Block.createCuboidShape(0.0D, 0.0D, 2.0D, 16.0D, 16.0D, 14.0D); @Unique - private final static VoxelShape viaFabricPlus$z_axis_shape_r1_12_2 = Block.createCuboidShape(2, 0, 0, 14, 16, 16); + private static final VoxelShape viaFabricPlus$z_axis_shape_r1_12_2 = Block.createCuboidShape(2.0D, 0.0D, 0.0D, 14.0D, 16.0D, 16.0D); @Shadow @Final @@ -56,11 +56,12 @@ public class MixinAnvilBlock extends FallingBlock { private boolean viaFabricPlus$requireOriginalShape; @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + public void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (viaFabricPlus$requireOriginalShape) { viaFabricPlus$requireOriginalShape = false; return; } + if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { cir.setReturnValue(state.get(FACING).getAxis() == Direction.Axis.X ? viaFabricPlus$x_axis_shape_r1_12_2 : viaFabricPlus$z_axis_shape_r1_12_2); } @@ -68,7 +69,10 @@ public class MixinAnvilBlock extends FallingBlock { @Override public VoxelShape getCullingShape(BlockState state, BlockView world, BlockPos pos) { + // Workaround for https://github.com/ViaVersion/ViaFabricPlus/issues/246 + // MoreCulling is caching the culling shape and doesn't reload it, so we have to force vanilla's shape here. viaFabricPlus$requireOriginalShape = true; return super.getCullingShape(state, world, pos); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBambooBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBambooBlock.java index b36c0b60..31309e8a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBambooBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBambooBlock.java @@ -32,12 +32,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(BambooBlock.class) -public class MixinBambooBlock { +public abstract class MixinBambooBlock { @Inject(method = "isShapeFullCube", at = @At("HEAD"), cancellable = true) - public void changeFullCube(BlockState state, BlockView world, BlockPos pos, CallbackInfoReturnable cir) { + private void changeBlockBoundingBox(BlockState state, BlockView world, BlockPos pos, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_17)) { cir.setReturnValue(true); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBedBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBedBlock.java index d76b5b01..a5f55e78 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBedBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBedBlock.java @@ -37,22 +37,23 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(BedBlock.class) -public class MixinBedBlock { +public abstract class MixinBedBlock { @Unique - private final static VoxelShape viaFabricPlus$shape_r1_13_2 = Block.createCuboidShape(0, 0, 0, 16, 9, 16); + private static final VoxelShape viaFabricPlus$shape_r1_13_2 = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 9.0D, 16.0D); @Inject(method = "bounceEntity", at = @At("HEAD"), cancellable = true) - public void injectBounceEntity(Entity entity, CallbackInfo ci) { + private void cancelEntityBounce(Entity entity, CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_11_1to1_11_2)) { ci.cancel(); } } @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_13_2)) { cir.setReturnValue(viaFabricPlus$shape_r1_13_2); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBrewingStandBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBrewingStandBlock.java index d196fc77..4d643b55 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBrewingStandBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinBrewingStandBlock.java @@ -36,18 +36,19 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(BrewingStandBlock.class) -public class MixinBrewingStandBlock { +public abstract class MixinBrewingStandBlock { @Unique - private final static VoxelShape viaFabricPlus$shape_r1_12_2 = VoxelShapes.union( - Block.createCuboidShape(0, 0, 0, 16, 2, 16) /* Base */, - Block.createCuboidShape(7, 0, 7, 9, 14, 9) /* Stick */ + private static final VoxelShape viaFabricPlus$shape_r1_12_2 = VoxelShapes.union( + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 2.0D, 16.0D) /* Base */, + Block.createCuboidShape(7.0D, 0.0D, 7.0D, 9.0D, 14.0D, 9.0D) /* Stick */ ); @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { cir.setReturnValue(viaFabricPlus$shape_r1_12_2); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCarpetBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCarpetBlock.java index 064f3cf2..69d44252 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCarpetBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCarpetBlock.java @@ -35,7 +35,7 @@ import org.spongepowered.asm.mixin.Unique; public abstract class MixinCarpetBlock extends Block { @Unique - private static final VoxelShape viaFabricPlus$shape_r1_7_10 = Block.createCuboidShape(0.0D, -0.00001D/*0.0D*/, 0.0D, 16.0D, 0.0D, 16.0D); + private static final VoxelShape viaFabricPlus$shape_r1_7_10 = Block.createCuboidShape(0.0D, -0.00001D /* 0.0D */, 0.0D, 16.0D, 0.0D, 16.0D); public MixinCarpetBlock(Settings settings) { super(settings); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCauldronBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCauldronBlock.java index 61c78b44..b85abc6e 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCauldronBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCauldronBlock.java @@ -38,7 +38,7 @@ import java.util.Map; public abstract class MixinCauldronBlock extends AbstractCauldronBlock { @Unique - private final static VoxelShape viaFabricPlus$shape_r1_12_2 = VoxelShapes.combineAndSimplify( + private static final VoxelShape viaFabricPlus$shape_r1_12_2 = VoxelShapes.combineAndSimplify( VoxelShapes.fullCube(), Block.createCuboidShape(2.0D, 5.0D, 2.0D, 14.0D, 16.0D, 14.0D), BooleanBiFunction.ONLY_FIRST @@ -55,4 +55,5 @@ public abstract class MixinCauldronBlock extends AbstractCauldronBlock { } return super.getOutlineShape(state, world, pos, context); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinChestBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinChestBlock.java index a651771b..e018c7ab 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinChestBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinChestBlock.java @@ -69,7 +69,7 @@ public abstract class MixinChestBlock extends AbstractChestBlock cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_4_2)) { cir.setReturnValue(VoxelShapes.fullCube()); } @@ -85,8 +85,7 @@ public abstract class MixinChestBlock extends AbstractChestBlock DOUBLE_NORTH_SHAPE; case SOUTH -> DOUBLE_SOUTH_SHAPE; case WEST -> DOUBLE_WEST_SHAPE; - case EAST -> DOUBLE_EAST_SHAPE; - default -> throw new IllegalStateException("Invalid facing"); + default -> DOUBLE_EAST_SHAPE; }; } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCropBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCropBlock.java index 219ba77b..8727c83c 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCropBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinCropBlock.java @@ -31,15 +31,16 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(CropBlock.class) -public class MixinCropBlock { +public abstract class MixinCropBlock { @Unique - private final VoxelShape viaFabricPlus$shape_r1_8_x = Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 4.0, 16.0); + private static final VoxelShape viaFabricPlus$shape_r1_8_x = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 4.0D, 16.0D); @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void injectGetOutlineShape(CallbackInfoReturnable cir) { + private void changeOutlineShape(CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { cir.setReturnValue(viaFabricPlus$shape_r1_8_x); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEndPortalBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEndPortalBlock.java index b68262c6..40c2a466 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEndPortalBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEndPortalBlock.java @@ -35,17 +35,17 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class MixinEndPortalBlock extends BlockWithEntity { @Unique - private final VoxelShape viaFabricPlus$shape_r1_8_x = Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 1.0, 16.0); + private static final VoxelShape viaFabricPlus$shape_r1_8_x = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 1.0D, 16.0D); @Unique - private final VoxelShape viaFabricPlus$shape_r1_16_5 = Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 12.0, 16.0); + private static final VoxelShape viaFabricPlus$shape_r1_16_5 = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 12.0D, 16.0D); protected MixinEndPortalBlock(Settings settings) { super(settings); } @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { cir.setReturnValue(viaFabricPlus$shape_r1_8_x); } else if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_16_4tor1_16_5)) { diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEndPortalFrameBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEndPortalFrameBlock.java index a50ae9ab..8568ca0c 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEndPortalFrameBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEndPortalFrameBlock.java @@ -39,7 +39,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(EndPortalFrameBlock.class) -public class MixinEndPortalFrameBlock extends Block { +public abstract class MixinEndPortalFrameBlock extends Block { @Shadow @Final @@ -50,7 +50,7 @@ public class MixinEndPortalFrameBlock extends Block { public static BooleanProperty EYE; @Unique - private static final VoxelShape viaFabricPlus$eye_shape_r1_12_2 = Block.createCuboidShape(5.0, 13.0, 5.0, 11.0, 16.0, 11.0); + private static final VoxelShape viaFabricPlus$eye_shape_r1_12_2 = Block.createCuboidShape(5.0D, 13.0D, 5.0D, 11.0D, 16.0D, 11.0D); @Unique private static final VoxelShape viaFabricPlus$frame_with_eye_shape_r1_12_2 = VoxelShapes.union(FRAME_SHAPE, viaFabricPlus$eye_shape_r1_12_2); @@ -60,7 +60,7 @@ public class MixinEndPortalFrameBlock extends Block { } @Inject(method = "getOutlineShape", at = @At(value = "HEAD"), cancellable = true) - public void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { cir.setReturnValue(FRAME_SHAPE); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEnderChestBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEnderChestBlock.java index f6882dae..2dc4850a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEnderChestBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinEnderChestBlock.java @@ -48,7 +48,7 @@ public abstract class MixinEnderChestBlock extends BlockWithEntity { } @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - private void changeShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_4_2)) { cir.setReturnValue(VoxelShapes.fullCube()); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFarmlandBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFarmlandBlock.java index 53dbf26f..c16bc172 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFarmlandBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFarmlandBlock.java @@ -37,7 +37,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(FarmlandBlock.class) -public class MixinFarmlandBlock extends Block { +public abstract class MixinFarmlandBlock extends Block { @Shadow @Final @@ -48,7 +48,7 @@ public class MixinFarmlandBlock extends Block { } @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_9_3tor1_9_4)) { cir.setReturnValue(VoxelShapes.fullCube()); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFenceBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFenceBlock.java index 715658eb..374d5a75 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFenceBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFenceBlock.java @@ -38,40 +38,37 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class MixinFenceBlock extends HorizontalConnectingBlock { @Unique - private VoxelShape[] collisionShapes1_4_7; + private static final VoxelShape viaFabricPlus$shape_b1_8_1 = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 24.0D, 16.0D); @Unique - private VoxelShape[] boundingShapes1_4_7; + private VoxelShape[] viaFabricPlus$collision_shape_r1_4_7; @Unique - private static final VoxelShape _b1_8_1_OUTLINE_SHAPE = VoxelShapes.fullCube(); - - @Unique - private static final VoxelShape _b1_8_1_COLLISION_SHAPE = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 24.0D, 16.0D); + private VoxelShape[] viaFabricPlus$outline_shape_r1_4_7; protected MixinFenceBlock(float radius1, float radius2, float boundingHeight1, float boundingHeight2, float collisionHeight, Settings settings) { super(radius1, radius2, boundingHeight1, boundingHeight2, collisionHeight, settings); } @Inject(method = "onUse", at = @At("HEAD"), cancellable = true) - private void modifyOnUse(CallbackInfoReturnable cir) { + private void alwaysSuccess(CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_10)) { cir.setReturnValue(ActionResult.SUCCESS); } } @Inject(method = "", at = @At("RETURN")) - private void initShapes(Settings settings, CallbackInfo ci) { - this.collisionShapes1_4_7 = this.createShapes1_4_7(2.0F, 2.0F, 24.0F, 0.0F, 24.0F); - this.boundingShapes1_4_7 = this.createShapes1_4_7(2.0F, 2.0F, 16.0F, 0.0F, 16.0F); + private void init1_4_7Shapes(Settings settings, CallbackInfo ci) { + this.viaFabricPlus$collision_shape_r1_4_7 = this.createShapes1_4_7(24.0F); + this.viaFabricPlus$outline_shape_r1_4_7 = this.createShapes1_4_7(16.0F); } @Override public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.b1_8tob1_8_1)) { - return _b1_8_1_OUTLINE_SHAPE; + return VoxelShapes.fullCube(); } else if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_4_6tor1_4_7)) { - return this.boundingShapes1_4_7[this.getShapeIndex(state)]; + return this.viaFabricPlus$outline_shape_r1_4_7[this.getShapeIndex(state)]; } return super.getOutlineShape(state, world, pos, context); @@ -80,42 +77,44 @@ public abstract class MixinFenceBlock extends HorizontalConnectingBlock { @Override public VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.b1_8tob1_8_1)) { - return _b1_8_1_COLLISION_SHAPE; + return viaFabricPlus$shape_b1_8_1; } else if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_4_6tor1_4_7)) { - return this.collisionShapes1_4_7[this.getShapeIndex(state)]; + return this.viaFabricPlus$collision_shape_r1_4_7[this.getShapeIndex(state)]; } return super.getCollisionShape(state, world, pos, context); } @Unique - private VoxelShape[] createShapes1_4_7(float radius1, float radius2, float height1, float offset2, float height2) { - final float f = 8.0F - radius1; - final float g = 8.0F + radius1; - final float h = 8.0F - radius2; - final float i = 8.0F + radius2; - final VoxelShape baseShape = Block.createCuboidShape(f, 0.0, f, g, height1, g); - final VoxelShape northShape = Block.createCuboidShape(h, offset2, 0.0, i, height2, i); - final VoxelShape southShape = Block.createCuboidShape(h, offset2, h, i, height2, 16.0); - final VoxelShape westShape = Block.createCuboidShape(0.0, offset2, h, i, height2, i); - final VoxelShape eastShape = Block.createCuboidShape(h, offset2, h, 16.0, height2, i); - final VoxelShape[] voxelShapes = new VoxelShape[]{ + private VoxelShape[] createShapes1_4_7(final float height) { + final float f = 6.0F; + final float g = 10.0F; + final float h = 6.0F; + final float i = 10.0F; + final VoxelShape baseShape = Block.createCuboidShape(f, 0.0, f, g, height, g); + final VoxelShape northShape = Block.createCuboidShape(h, (float) 0.0, 0.0, i, height, i); + final VoxelShape southShape = Block.createCuboidShape(h, (float) 0.0, h, i, height, 16.0); + final VoxelShape westShape = Block.createCuboidShape(0.0, (float) 0.0, h, i, height, i); + final VoxelShape eastShape = Block.createCuboidShape(h, (float) 0.0, h, 16.0, height, i); + final VoxelShape[] voxelShapes = new VoxelShape[] { VoxelShapes.empty(), - Block.createCuboidShape(f, offset2, h, g, height1, 16.0D), - Block.createCuboidShape(0.0D, offset2, f, i, height1, g), - Block.createCuboidShape(f - 6, offset2, h, g, height1, 16.0D), - Block.createCuboidShape(f, offset2, 0.0D, g, height1, i), + Block.createCuboidShape(f, (float) 0.0, h, g, height, 16.0D), + Block.createCuboidShape(0.0D, (float) 0.0, f, i, height, g), + Block.createCuboidShape(f - 6, (float) 0.0, h, g, height, 16.0D), + Block.createCuboidShape(f, (float) 0.0, 0.0D, g, height, i), + VoxelShapes.union(southShape, northShape), - Block.createCuboidShape(f - 6, offset2, 0.0D, g, height1, i), - Block.createCuboidShape(f - 6, offset2, h - 5, g, height1, 16.0D), - Block.createCuboidShape(h, offset2, f, 16.0D, height1, g), - Block.createCuboidShape(h, offset2, f, 16.0D, height1, g + 6), + Block.createCuboidShape(f - 6, (float) 0.0, 0.0D, g, height, i), + Block.createCuboidShape(f - 6, (float) 0.0, h - 5, g, height, 16.0D), + Block.createCuboidShape(h, (float) 0.0, f, 16.0D, height, g), + Block.createCuboidShape(h, (float) 0.0, f, 16.0D, height, g + 6), + VoxelShapes.union(westShape, eastShape), - Block.createCuboidShape(h - 5, offset2, f, 16.0D, height1, g + 6), - Block.createCuboidShape(f, offset2, 0.0D, g + 6, height1, i), - Block.createCuboidShape(f, offset2, 0.0D, g + 6, height1, i + 5), - Block.createCuboidShape(h - 5, offset2, f - 6, 16.0D, height1, g), - Block.createCuboidShape(0, offset2, 0, 16.0D, height1, 16.0D) + Block.createCuboidShape(h - 5, (float) 0.0, f, 16.0D, height, g + 6), + Block.createCuboidShape(f, (float) 0.0, 0.0D, g + 6, height, i), + Block.createCuboidShape(f, (float) 0.0, 0.0D, g + 6, height, i + 5), + Block.createCuboidShape(h - 5, (float) 0.0, f - 6, 16.0D, height, g), + Block.createCuboidShape(0, (float) 0.0, 0, 16.0D, height, 16.0D) }; for (int j = 0; j < 16; ++j) { diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFenceGateBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFenceGateBlock.java index d3b8de18..8d0ac257 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFenceGateBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFenceGateBlock.java @@ -37,16 +37,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class MixinFenceGateBlock extends HorizontalFacingBlock { @Unique - private static final VoxelShape _b1_8_1_X_AXIS_SHAPE = VoxelShapes.fullCube(); - - @Unique - private static final VoxelShape _b1_8_1_Z_AXIS_SHAPE = VoxelShapes.fullCube(); - - @Unique - private static final VoxelShape _b1_8_1_X_AXIS_COLLISION_SHAPE = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 24.0D, 16.0D); - - @Unique - private static final VoxelShape _b1_8_1_Z_AXIS_COLLISION_SHAPE = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 24.0D, 16.0D); + private static final VoxelShape viaFabricPlus$x_and_z_axis_collision_shape_b1_8_1 = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 24.0D, 16.0D); protected MixinFenceGateBlock(Settings settings) { super(settings); @@ -55,14 +46,14 @@ public abstract class MixinFenceGateBlock extends HorizontalFacingBlock { @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (!state.get(FenceGateBlock.IN_WALL) && ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.b1_8tob1_8_1)) { - cir.setReturnValue(state.get(FACING).getAxis() == Direction.Axis.X ? _b1_8_1_X_AXIS_SHAPE : _b1_8_1_Z_AXIS_SHAPE); + cir.setReturnValue(VoxelShapes.fullCube()); } } @Inject(method = "getCollisionShape", at = @At("HEAD"), cancellable = true) private void changeCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (!state.get(FenceGateBlock.OPEN) && ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.b1_8tob1_8_1)) { - cir.setReturnValue(state.get(FACING).getAxis() == Direction.Axis.X ? _b1_8_1_X_AXIS_COLLISION_SHAPE : _b1_8_1_Z_AXIS_COLLISION_SHAPE); + cir.setReturnValue(viaFabricPlus$x_and_z_axis_collision_shape_b1_8_1); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFireBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFireBlock.java index ee39928d..cdd8e635 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFireBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFireBlock.java @@ -35,12 +35,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(FireBlock.class) -public class MixinFireBlock { +public abstract class MixinFireBlock { @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_15_2)) { cir.setReturnValue(VoxelShapes.empty()); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFlowerPotBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFlowerPotBlock.java index 64c47138..5d5d1e3c 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFlowerPotBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFlowerPotBlock.java @@ -34,16 +34,17 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(FlowerPotBlock.class) -public class MixinFlowerPotBlock { +public abstract class MixinFlowerPotBlock { @Shadow @Final private Block content; @Inject(method = "onUse", at = @At(value = "FIELD", target = "Lnet/minecraft/block/FlowerPotBlock;content:Lnet/minecraft/block/Block;", ordinal = 0), cancellable = true) - private void injectOnUse(CallbackInfoReturnable ci) { + private void alwaysConsume(CallbackInfoReturnable ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_10) && content != Blocks.AIR) { ci.setReturnValue(ActionResult.CONSUME); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFlowerbedBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFlowerbedBlock.java index 4ea015b6..c04aefe8 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFlowerbedBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinFlowerbedBlock.java @@ -35,15 +35,16 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(FlowerbedBlock.class) -public class MixinFlowerbedBlock { +public abstract class MixinFlowerbedBlock { @Unique - private final static VoxelShape viaFabricPlus$shape_r1_20_1 = Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, 3.0, 16.0); + private static final VoxelShape viaFabricPlus$shape_r1_20_1 = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 3.0D, 16.0D); @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void replaceShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_20tor1_20_1)) { cir.setReturnValue(viaFabricPlus$shape_r1_20_1); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinHopperBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinHopperBlock.java index 17beecf7..93e2dba2 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinHopperBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinHopperBlock.java @@ -37,10 +37,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class MixinHopperBlock extends BlockWithEntity { @Unique - private final static VoxelShape viaFabricPlus$inside_shape_r1_12_2 = Block.createCuboidShape(2, 10, 2, 14, 16, 14); + private static final VoxelShape viaFabricPlus$inside_shape_r1_12_2 = Block.createCuboidShape(2.0D, 10.0D, 2.0D, 14.0D, 16.0D, 14.0D); @Unique - private final static VoxelShape viaFabricPlus$hopper_shape_r1_12_2 = VoxelShapes.combineAndSimplify(VoxelShapes.fullCube(), viaFabricPlus$inside_shape_r1_12_2, BooleanBiFunction.ONLY_FIRST); + private static final VoxelShape viaFabricPlus$hopper_shape_r1_12_2 = VoxelShapes.combineAndSimplify(VoxelShapes.fullCube(), viaFabricPlus$inside_shape_r1_12_2, BooleanBiFunction.ONLY_FIRST); @Unique private boolean viaFabricPlus$requireOriginalShape; @@ -50,7 +50,7 @@ public abstract class MixinHopperBlock extends BlockWithEntity { } @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + public void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (viaFabricPlus$requireOriginalShape) { viaFabricPlus$requireOriginalShape = false; return; @@ -61,7 +61,7 @@ public abstract class MixinHopperBlock extends BlockWithEntity { } @Inject(method = "getRaycastShape", at = @At("HEAD"), cancellable = true) - public void injectGetRaycastShape(BlockState state, BlockView world, BlockPos pos, CallbackInfoReturnable cir) { + public void changeRaycastShape(BlockState state, BlockView world, BlockPos pos, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { cir.setReturnValue(viaFabricPlus$inside_shape_r1_12_2); } @@ -69,7 +69,9 @@ public abstract class MixinHopperBlock extends BlockWithEntity { @Override public VoxelShape getCullingShape(BlockState state, BlockView world, BlockPos pos) { + // Workaround for https://github.com/ViaVersion/ViaFabricPlus/issues/45 viaFabricPlus$requireOriginalShape = true; return super.getCullingShape(state, world, pos); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinLadderBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinLadderBlock.java index 96e29ea1..bc4de7dc 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinLadderBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinLadderBlock.java @@ -35,22 +35,22 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(LadderBlock.class) -public class MixinLadderBlock { +public abstract class MixinLadderBlock { @Unique - private final static VoxelShape viaFabricPlus$east_shape_r1_8_x = Block.createCuboidShape(0, 0, 0, 2, 16, 16); + private static final VoxelShape viaFabricPlus$east_shape_r1_8_x = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 2.0D, 16.0D, 16.0D); @Unique - private final static VoxelShape viaFabricPlus$west_shape_r1_8_x = Block.createCuboidShape(14, 0, 0, 16, 16, 16); + private static final VoxelShape viaFabricPlus$west_shape_r1_8_x = Block.createCuboidShape(14.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D); @Unique - private final static VoxelShape viaFabricPlus$south_shape_r1_8_x = Block.createCuboidShape(0, 0, 0, 16, 16, 2); + private static final VoxelShape viaFabricPlus$south_shape_r1_8_x = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 16.0D, 2.0D); @Unique - private final static VoxelShape viaFabricPlus$north_shape_r1_8_x = Block.createCuboidShape(0, 0, 14, 16, 16, 16); + private static final VoxelShape viaFabricPlus$north_shape_r1_8_x = Block.createCuboidShape(0.0D, 0.0D, 14.0D, 16.0D, 16.0D, 16.0D); @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - private void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable ci) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { switch (state.get(LadderBlock.FACING)) { case NORTH -> ci.setReturnValue(viaFabricPlus$north_shape_r1_8_x); @@ -60,4 +60,5 @@ public class MixinLadderBlock { } } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinLilyPadBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinLilyPadBlock.java index d722169d..9d122333 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinLilyPadBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinLilyPadBlock.java @@ -35,15 +35,16 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(LilyPadBlock.class) -public class MixinLilyPadBlock { +public abstract class MixinLilyPadBlock { @Unique - private final static VoxelShape viaFabricPlus$shape_r1_8_x = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 0.25D, 16.0D); + private static final VoxelShape viaFabricPlus$shape_r1_8_x = Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 0.25D, 16.0D); @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - public void changeBoundingBox(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { cir.setReturnValue(viaFabricPlus$shape_r1_8_x); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPaneBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPaneBlock.java index 742225b2..c0527a75 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPaneBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPaneBlock.java @@ -36,62 +36,38 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public abstract class MixinPaneBlock extends HorizontalConnectingBlock { @Unique - private VoxelShape[] collisionShapes1_8; - - @Unique - private VoxelShape[] boundingShapes1_8; + private VoxelShape[] viaFabricPlus$shape_r1_8; protected MixinPaneBlock(float radius1, float radius2, float boundingHeight1, float boundingHeight2, float collisionHeight, Settings settings) { super(radius1, radius2, boundingHeight1, boundingHeight2, collisionHeight, settings); } @Inject(method = "", at = @At("RETURN")) - private void initShapes(Settings settings, CallbackInfo ci) { - this.collisionShapes1_8 = this.createShapes1_8(1.0F, 1.0F, 16.0F, 0.0F, 16.0F); - this.boundingShapes1_8 = this.createShapes1_8(1.0F, 1.0F, 16.0F, 0.0F, 16.0F); - } + private void initShapes1_8(Settings settings, CallbackInfo ci) { + final float f = 7.0F; + final float g = 9.0F; + final float h = 7.0F; + final float i = 9.0F; - @Override - public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { - if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { - return this.boundingShapes1_8[this.getShapeIndex(state)]; - } + final VoxelShape baseShape = Block.createCuboidShape(f, 0.0, f, g, (float) 16.0, g); + final VoxelShape northShape = Block.createCuboidShape(h, (float) 0.0, 0.0, i, (float) 16.0, i); + final VoxelShape southShape = Block.createCuboidShape(h, (float) 0.0, h, i, (float) 16.0, 16.0); + final VoxelShape westShape = Block.createCuboidShape(0.0, (float) 0.0, h, i, (float) 16.0, i); + final VoxelShape eastShape = Block.createCuboidShape(h, (float) 0.0, h, 16.0, (float) 16.0, i); - return super.getOutlineShape(state, world, pos, context); - } - - @Override - public VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { - if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { - return this.collisionShapes1_8[this.getShapeIndex(state)]; - } - - return super.getCollisionShape(state, world, pos, context); - } - - @Unique - private VoxelShape[] createShapes1_8(float radius1, float radius2, float height1, float offset2, float height2) { - final float f = 8.0F - radius1; - final float g = 8.0F + radius1; - final float h = 8.0F - radius2; - final float i = 8.0F + radius2; - final VoxelShape baseShape = Block.createCuboidShape(f, 0.0, f, g, height1, g); - final VoxelShape northShape = Block.createCuboidShape(h, offset2, 0.0, i, height2, i); - final VoxelShape southShape = Block.createCuboidShape(h, offset2, h, i, height2, 16.0); - final VoxelShape westShape = Block.createCuboidShape(0.0, offset2, h, i, height2, i); - final VoxelShape eastShape = Block.createCuboidShape(h, offset2, h, 16.0, height2, i); final VoxelShape northEastCornerShape = VoxelShapes.union(northShape, eastShape); final VoxelShape southWestCornerShape = VoxelShapes.union(southShape, westShape); - final VoxelShape[] voxelShapes = new VoxelShape[]{ + + viaFabricPlus$shape_r1_8 = new VoxelShape[] { VoxelShapes.empty(), - Block.createCuboidShape(h, offset2, h + 1, i, height2, 16.0D), // south - Block.createCuboidShape(0.0D, offset2, h, i - 1, height2, i), // west + Block.createCuboidShape(h, (float) 0.0, h + 1, i, (float) 16.0, 16.0D), // south + Block.createCuboidShape(0.0D, (float) 0.0, h, i - 1, (float) 16.0, i), // west southWestCornerShape, - Block.createCuboidShape(h, offset2, 0.0D, i, height2, i - 1), // north + Block.createCuboidShape(h, (float) 0.0, 0.0D, i, (float) 16.0, i - 1), // north VoxelShapes.union(southShape, northShape), VoxelShapes.union(westShape, northShape), VoxelShapes.union(southWestCornerShape, northShape), - Block.createCuboidShape(h + 1, offset2, h, 16.0D, height2, i), // east + Block.createCuboidShape(h + 1, (float) 0.0, h, 16.0D, (float) 16.0, i), // east VoxelShapes.union(southShape, eastShape), VoxelShapes.union(westShape, eastShape), VoxelShapes.union(southWestCornerShape, eastShape), @@ -103,10 +79,26 @@ public abstract class MixinPaneBlock extends HorizontalConnectingBlock { for (int j = 0; j < 16; ++j) { if (j == 1 || j == 2 || j == 4 || j == 8) continue; - voxelShapes[j] = VoxelShapes.union(baseShape, voxelShapes[j]); + viaFabricPlus$shape_r1_8[j] = VoxelShapes.union(baseShape, viaFabricPlus$shape_r1_8[j]); + } + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { + return this.viaFabricPlus$shape_r1_8[this.getShapeIndex(state)]; } - return voxelShapes; + return super.getOutlineShape(state, world, pos, context); + } + + @Override + public VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { + return this.viaFabricPlus$shape_r1_8[this.getShapeIndex(state)]; + } + + return super.getCollisionShape(state, world, pos, context); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonBlock.java index d6fb9807..c973b593 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonBlock.java @@ -64,17 +64,14 @@ public abstract class MixinPistonBlock extends FacingBlock { @Final protected static VoxelShape EXTENDED_EAST_SHAPE; - @Unique - private static final VoxelShape _1_1_SHAPE = VoxelShapes.fullCube(); - protected MixinPistonBlock(Settings settings) { super(settings); } @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - private void changeShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_1)) { - cir.setReturnValue(_1_1_SHAPE); + cir.setReturnValue(VoxelShapes.fullCube()); } } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonHeadBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonHeadBlock.java index ef3cbac2..2dc2aa56 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonHeadBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinPistonHeadBlock.java @@ -62,29 +62,29 @@ public abstract class MixinPistonHeadBlock extends FacingBlock { protected static VoxelShape EAST_HEAD_SHAPE; @Unique - private static final VoxelShape _1_8_UP_ARM_SHAPE = Block.createCuboidShape(6.0, 0.0, 6.0, 10.0, 12.0, 10.0); + private static final VoxelShape viaFabricPlus$up_arm_shape_r1_8_x = Block.createCuboidShape(6.0, 0.0, 6.0, 10.0, 12.0, 10.0); @Unique - private static final VoxelShape _1_8_DOWN_ARM_SHAPE = Block.createCuboidShape(6.0, 4.0, 6.0, 10.0, 16.0, 10.0); + private static final VoxelShape viaFabricPlus$down_arm_shape_r1_8_x = Block.createCuboidShape(6.0, 4.0, 6.0, 10.0, 16.0, 10.0); @Unique - private static final VoxelShape _1_8_SOUTH_ARM_SHAPE = Block.createCuboidShape(4.0, 6.0, 0.0, 12.0, 10.0, 12.0); + private static final VoxelShape viaFabricPlus$south_arm_shape_r1_8_x = Block.createCuboidShape(4.0, 6.0, 0.0, 12.0, 10.0, 12.0); @Unique - private static final VoxelShape _1_8_NORTH_ARM_SHAPE = Block.createCuboidShape(4.0, 6.0, 4.0, 12.0, 10.0, 16.0); + private static final VoxelShape viaFabricPlus$north_arm_shape_r1_8_x = Block.createCuboidShape(4.0, 6.0, 4.0, 12.0, 10.0, 16.0); @Unique - private static final VoxelShape _1_8_EAST_ARM_SHAPE = Block.createCuboidShape(0.0, 6.0, 4.0, 12.0, 10.0, 12.0); + private static final VoxelShape viaFabricPlus$east_arm_shape_r1_8_x = Block.createCuboidShape(0.0, 6.0, 4.0, 12.0, 10.0, 12.0); @Unique - private static final VoxelShape _1_8_WEST_ARM_SHAPE = Block.createCuboidShape(6.0, 4.0, 4.0, 10.0, 12.0, 16.0); + private static final VoxelShape viaFabricPlus$west_arm_shape_r1_8_x = Block.createCuboidShape(6.0, 4.0, 4.0, 10.0, 12.0, 16.0); protected MixinPistonHeadBlock(Settings settings) { super(settings); } @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) - private void changeShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { cir.setReturnValue(switch (state.get(PistonHeadBlock.FACING)) { case DOWN -> DOWN_HEAD_SHAPE; @@ -101,12 +101,12 @@ public abstract class MixinPistonHeadBlock extends FacingBlock { public VoxelShape getCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { return switch (state.get(PistonHeadBlock.FACING)) { - case DOWN -> VoxelShapes.union(DOWN_HEAD_SHAPE, _1_8_DOWN_ARM_SHAPE); - case UP -> VoxelShapes.union(UP_HEAD_SHAPE, _1_8_UP_ARM_SHAPE); - case NORTH -> VoxelShapes.union(NORTH_HEAD_SHAPE, _1_8_NORTH_ARM_SHAPE); - case SOUTH -> VoxelShapes.union(SOUTH_HEAD_SHAPE, _1_8_SOUTH_ARM_SHAPE); - case WEST -> VoxelShapes.union(WEST_HEAD_SHAPE, _1_8_WEST_ARM_SHAPE); - case EAST -> VoxelShapes.union(EAST_HEAD_SHAPE, _1_8_EAST_ARM_SHAPE); + case DOWN -> VoxelShapes.union(DOWN_HEAD_SHAPE, viaFabricPlus$down_arm_shape_r1_8_x); + case UP -> VoxelShapes.union(UP_HEAD_SHAPE, viaFabricPlus$up_arm_shape_r1_8_x); + case NORTH -> VoxelShapes.union(NORTH_HEAD_SHAPE, viaFabricPlus$north_arm_shape_r1_8_x); + case SOUTH -> VoxelShapes.union(SOUTH_HEAD_SHAPE, viaFabricPlus$south_arm_shape_r1_8_x); + case WEST -> VoxelShapes.union(WEST_HEAD_SHAPE, viaFabricPlus$west_arm_shape_r1_8_x); + case EAST -> VoxelShapes.union(EAST_HEAD_SHAPE, viaFabricPlus$east_arm_shape_r1_8_x); }; } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinSnowBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinSnowBlock.java index 4998d4b9..02e79038 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinSnowBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinSnowBlock.java @@ -38,28 +38,30 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(SnowBlock.class) -public class MixinSnowBlock { +public abstract class MixinSnowBlock { @Unique - private final static VoxelShape[] viaFabricPlus$layers_to_shape_r1_12_2 = new VoxelShape[]{ - Block.createCuboidShape(0, -0.00001 /* 0D */, 0, 16, 0, 16), - Block.createCuboidShape(0, 0, 0, 16, 2, 16), - Block.createCuboidShape(0, 0, 0, 16, 4, 16), - Block.createCuboidShape(0, 0, 0, 16, 6, 16), - Block.createCuboidShape(0, 0, 0, 16, 8, 16), - Block.createCuboidShape(0, 0, 0, 16, 10, 16), - Block.createCuboidShape(0, 0, 0, 16, 12, 16), - Block.createCuboidShape(0, 0, 0, 16, 14, 16), - Block.createCuboidShape(0, 0, 0, 16, 16, 16) + private static final VoxelShape[] viaFabricPlus$layers_to_shape_r1_12_2 = new VoxelShape[]{ + Block.createCuboidShape(0.0D, -0.00001 /* 0.0D */, 0.0D, 16.0D, 0.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 2.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 4.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 6.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 10.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 12.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 14.0D, 16.0D), + Block.createCuboidShape(0.0D, 0.0D, 0.0D, 16.0D, 16.0D, 16.0D) }; + @Shadow @Final public static IntProperty LAYERS; @Inject(method = "getCollisionShape", at = @At("HEAD"), cancellable = true) - public void injectGetOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { + private void changeCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { cir.setReturnValue(viaFabricPlus$layers_to_shape_r1_12_2[state.get(LAYERS) - 1]); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinWallBlock.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinWallBlock.java index 0e286502..3470a9d5 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinWallBlock.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/block/MixinWallBlock.java @@ -52,22 +52,22 @@ public abstract class MixinWallBlock extends Block { private Map shapeMap; @Unique - private VoxelShape[] collisionShapes1_12_2; + private final Object2IntMap viaFabricPlus$shape_index_cache_r1_12_2 = new Object2IntOpenHashMap<>(); @Unique - private VoxelShape[] boundingShapes1_12_2; + private VoxelShape[] viaFabricPlus$collision_shape_r1_12_2; @Unique - private final Object2IntMap SHAPE_INDEX_CACHE1_12_2 = new Object2IntOpenHashMap<>(); + private VoxelShape[] viaFabricPlus$outline_shape_r1_12_2; public MixinWallBlock(Settings settings) { super(settings); } @Inject(method = "", at = @At("RETURN")) - private void initShapes(Settings settings, CallbackInfo ci) { - this.collisionShapes1_12_2 = this.createShapes1_12_2(4.0F, 3.0F, 24.0F, 0.0F, 24.0F); - this.boundingShapes1_12_2 = this.createShapes1_12_2(4.0F, 3.0F, 16.0F, 0.0F, 14.0F); + private void initShapes1_12_2(Settings settings, CallbackInfo ci) { + this.viaFabricPlus$collision_shape_r1_12_2 = this.createShapes1_12_2(24.0F); + this.viaFabricPlus$outline_shape_r1_12_2 = this.createShapes1_12_2(16.0F); } @Inject(method = "getPlacementState", at = @At("RETURN"), cancellable = true) @@ -112,14 +112,14 @@ public abstract class MixinWallBlock extends Block { @Inject(method = "getOutlineShape", at = @At("HEAD"), cancellable = true) private void changeOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (state.get(WallBlock.UP) && ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { - cir.setReturnValue(this.boundingShapes1_12_2[this.getShapeIndex(state)]); + cir.setReturnValue(this.viaFabricPlus$outline_shape_r1_12_2[this.getShapeIndex(state)]); } } @Inject(method = "getCollisionShape", at = @At("HEAD"), cancellable = true) private void changeCollisionShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context, CallbackInfoReturnable cir) { if (state.get(WallBlock.UP) && ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { - cir.setReturnValue(this.collisionShapes1_12_2[this.getShapeIndex(state)]); + cir.setReturnValue(this.viaFabricPlus$collision_shape_r1_12_2[this.getShapeIndex(state)]); } } @@ -133,33 +133,34 @@ public abstract class MixinWallBlock extends Block { } @Unique - private VoxelShape[] createShapes1_12_2(float radius1, float radius2, float height1, float offset2, float height2) { - final float f = 8.0F - radius1; - final float g = 8.0F + radius1; - final float h = 8.0F - radius2; - final float i = 8.0F + radius2; - final VoxelShape baseShape = Block.createCuboidShape(f, 0.0D, f, g, height1, g); - final VoxelShape northShape = Block.createCuboidShape(h, offset2, 0.0D, i, height2, i); - final VoxelShape southShape = Block.createCuboidShape(h, offset2, h, i, height2, 16.0D); - final VoxelShape westShape = Block.createCuboidShape(0.0D, offset2, h, i, height2, i); - final VoxelShape eastShape = Block.createCuboidShape(h, offset2, h, 16.0D, height2, i); + private VoxelShape[] createShapes1_12_2(final float height) { + final float f = 4.0F; + final float g = 12.0F; + final float h = 5.0F; + final float i = 11.0F; + + final VoxelShape baseShape = Block.createCuboidShape(f, 0.0D, f, g, height, g); + final VoxelShape northShape = Block.createCuboidShape(h, (float) 0.0, 0.0D, i, height, i); + final VoxelShape southShape = Block.createCuboidShape(h, (float) 0.0, h, i, height, 16.0D); + final VoxelShape westShape = Block.createCuboidShape(0.0D, (float) 0.0, h, i, height, i); + final VoxelShape eastShape = Block.createCuboidShape(h, (float) 0.0, h, 16.0D, height, i); final VoxelShape[] voxelShapes = new VoxelShape[]{ VoxelShapes.empty(), - Block.createCuboidShape(f, offset2, h, g, height1, 16.0D), - Block.createCuboidShape(0.0D, offset2, f, i, height1, g), - Block.createCuboidShape(f - 4, offset2, h - 1, g, height1, 16.0D), - Block.createCuboidShape(f, offset2, 0.0D, g, height1, i), + Block.createCuboidShape(f, (float) 0.0, h, g, height, 16.0D), + Block.createCuboidShape(0.0D, (float) 0.0, f, i, height, g), + Block.createCuboidShape(f - 4, (float) 0.0, h - 1, g, height, 16.0D), + Block.createCuboidShape(f, (float) 0.0, 0.0D, g, height, i), VoxelShapes.union(southShape, northShape), - Block.createCuboidShape(f - 4, offset2, 0.0D, g, height1, i + 1), - Block.createCuboidShape(f - 4, offset2, h - 5, g, height1, 16.0D), - Block.createCuboidShape(h, offset2, f, 16.0D, height1, g), - Block.createCuboidShape(h - 1, offset2, f, 16.0D, height1, g + 4), + Block.createCuboidShape(f - 4, (float) 0.0, 0.0D, g, height, i + 1), + Block.createCuboidShape(f - 4, (float) 0.0, h - 5, g, height, 16.0D), + Block.createCuboidShape(h, (float) 0.0, f, 16.0D, height, g), + Block.createCuboidShape(h - 1, (float) 0.0, f, 16.0D, height, g + 4), VoxelShapes.union(westShape, eastShape), - Block.createCuboidShape(h - 5, offset2, f, 16.0D, height1, g + 4), - Block.createCuboidShape(f, offset2, 0.0D, g + 4, height1, i + 1), - Block.createCuboidShape(f, offset2, 0.0D, g + 4, height1, i + 5), - Block.createCuboidShape(h - 5, offset2, f - 4, 16.0D, height1, g), - Block.createCuboidShape(0, offset2, 0, 16.0D, height1, 16.0D) + Block.createCuboidShape(h - 5, (float) 0.0, f, 16.0D, height, g + 4), + Block.createCuboidShape(f, (float) 0.0, 0.0D, g + 4, height, i + 1), + Block.createCuboidShape(f, (float) 0.0, 0.0D, g + 4, height, i + 5), + Block.createCuboidShape(h - 5, (float) 0.0, f - 4, 16.0D, height, g), + Block.createCuboidShape(0, (float) 0.0, 0, 16.0D, height, 16.0D) }; for (int j = 0; j < 16; ++j) { @@ -176,7 +177,7 @@ public abstract class MixinWallBlock extends Block { @Unique private int getShapeIndex(BlockState state) { - return this.SHAPE_INDEX_CACHE1_12_2.computeIntIfAbsent(state, statex -> { + return this.viaFabricPlus$shape_index_cache_r1_12_2.computeIntIfAbsent(state, statex -> { int i = 0; if (!WallShape.NONE.equals(statex.get(WallBlock.NORTH_SHAPE))) { i |= getDirectionMask(Direction.NORTH); diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinAnimalEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinAnimalEntity.java index 8252e0ce..ece3c705 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinAnimalEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinAnimalEntity.java @@ -29,10 +29,11 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(AnimalEntity.class) -public class MixinAnimalEntity { +public abstract class MixinAnimalEntity { @Redirect(method = "interactMob", at = @At(value = "FIELD", target = "Lnet/minecraft/world/World;isClient:Z")) - public boolean redirectInteractMob(World instance) { + private boolean redirectInteractMob(World instance) { return instance.isClient && ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(VersionEnum.r1_15); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinBipedEntityModel.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinBipedEntityModel.java index 243c738b..48e293ad 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinBipedEntityModel.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinBipedEntityModel.java @@ -32,14 +32,14 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(BipedEntityModel.class) -public class MixinBipedEntityModel { +public abstract class MixinBipedEntityModel { @Shadow @Final public ModelPart rightArm; @Shadow @Final public ModelPart leftArm; @Inject(method = "setAngles(Lnet/minecraft/entity/LivingEntity;FFFFF)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/model/ModelPart;roll:F", ordinal = 1, shift = At.Shift.AFTER)) - public void addOldWalkAnimation(T livingEntity, float f, float g, float h, float i, float j, CallbackInfo ci) { + private void addOldWalkAnimation(T livingEntity, float f, float g, float h, float i, float j, CallbackInfo ci) { if (VisualSettings.INSTANCE.oldWalkingAnimation.isEnabled()) { this.rightArm.pitch = MathHelper.cos(f * 0.6662F + 3.1415927F) * 2.0F * g; this.rightArm.roll = (MathHelper.cos(f * 0.2312F) + 1.0F) * 1.0F * g; @@ -48,4 +48,5 @@ public class MixinBipedEntityModel { this.leftArm.roll = (MathHelper.cos(f * 0.2812F) - 1.0F) * 1.0F * g; } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCamelEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCamelEntity.java index 6a09cba1..7d6a4b4d 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCamelEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCamelEntity.java @@ -40,7 +40,7 @@ public abstract class MixinCamelEntity extends AbstractHorseEntity { } @Redirect(method = "interactMob", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/passive/CamelEntity;isBaby()Z", ordinal = 0)) - public boolean removeIfCase(CamelEntity instance) { + private boolean removeBabyCondition(CamelEntity instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_4)) { return false; } @@ -48,7 +48,7 @@ public abstract class MixinCamelEntity extends AbstractHorseEntity { } @Unique - public void viaFabricPlus$clamPassengerYaw(final Entity passenger) { + private void viaFabricPlus$clamPassengerYaw(final Entity passenger) { passenger.setBodyYaw(this.getYaw()); final float passengerYaw = passenger.getYaw(); @@ -76,4 +76,5 @@ public abstract class MixinCamelEntity extends AbstractHorseEntity { viaFabricPlus$clamPassengerYaw(passenger); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinClientPlayerEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinClientPlayerEntity.java index df319268..362510e8 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinClientPlayerEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinClientPlayerEntity.java @@ -20,7 +20,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.entity; import com.mojang.authlib.GameProfile; -import de.florianmichael.viafabricplus.definition.ClientsideFixes; +import de.florianmichael.viafabricplus.fixes.ClientsideFixes; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import de.florianmichael.viafabricplus.settings.impl.DebugSettings; import de.florianmichael.viafabricplus.settings.impl.VisualSettings; @@ -67,31 +67,33 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity @Shadow protected abstract void sendSprintingPacket(); @Redirect(method = "sendMovementPackets", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;square(D)D")) - public double changeMagnitude(double n) { + private double changeMagnitude(double n) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_18_2)) { n = 9.0E-4D; } + return MathHelper.square(n); } @Redirect(method = "sendMovementPackets", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/ClientPlayerEntity;ticksSinceLastPositionPacketSent:I", ordinal = 0)) - public int revertLastPositionPacketSentIncrementor(ClientPlayerEntity instance) { + private int revertLastPositionPacketSentIncrementor(ClientPlayerEntity instance) { // Mixin calls the redirector and sets the original field to the return value of the redirector + 1, therefore the -1 results, so we truncate the + 1 again and the field does not change if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { return ticksSinceLastPositionPacketSent - 1; } + return ticksSinceLastPositionPacketSent; } @Inject(method = "sendMovementPackets", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;hasVehicle()Z")) - public void incrementLastPositionPacketSentCounter(CallbackInfo ci) { + private void incrementLastPositionPacketSentCounter(CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { ++this.ticksSinceLastPositionPacketSent; } } @Redirect(method = "sendMovementPackets", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/ClientPlayerEntity;lastOnGround:Z", ordinal = 0)) - public boolean sendIdlePacket(ClientPlayerEntity instance) { + private boolean sendIdlePacket(ClientPlayerEntity instance) { if (DebugSettings.INSTANCE.sendIdlePacket.isEnabled()) { return !isOnGround(); } @@ -99,7 +101,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity } @Inject(method = "swingHand", at = @At("HEAD"), cancellable = true) - public void injectSwingHand(Hand hand, CallbackInfo ci) { + private void injectSwingHand(Hand hand, CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8) && viaFabricPlus$areSwingCanceledThisTick) { ci.cancel(); } @@ -107,11 +109,9 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity viaFabricPlus$areSwingCanceledThisTick = false; } - @Inject( - method = "tickMovement()V", + @Inject(method = "tickMovement()V", slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isCamera()Z")), - at = @At(value = "FIELD", target = "Lnet/minecraft/client/input/Input;sneaking:Z", ordinal = 0) - ) + at = @At(value = "FIELD", target = "Lnet/minecraft/client/input/Input;sneaking:Z", ordinal = 0)) private void injectTickMovement(CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_14_4)) { if (this.input.sneaking) { @@ -124,7 +124,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity @Redirect(method = "tickMovement", slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isWalking()Z")), at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isSwimming()Z", ordinal = 0)) - public boolean redirectIsSneakingWhileSwimming(ClientPlayerEntity _this) { + private boolean redirectIsSneakingWhileSwimming(ClientPlayerEntity _this) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_14_1)) { return false; } else { @@ -133,7 +133,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity } @Redirect(method = "isWalking", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isSubmergedInWater()Z")) - public boolean easierUnderwaterSprinting(ClientPlayerEntity instance) { + private boolean easierUnderwaterSprinting(ClientPlayerEntity instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_14_1)) { return false; } @@ -159,14 +159,14 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity } @Redirect(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;sendSprintingPacket()V")) - public void removeSprintingPacket(ClientPlayerEntity instance) { + private void removeSprintingPacket(ClientPlayerEntity instance) { if (ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(VersionEnum.r1_19_3)) { sendSprintingPacket(); } } @Redirect(method = "autoJump", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;inverseSqrt(F)F")) - public float useFastInverse(float x) { + private float useFastInverse(float x) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_3)) { x = Float.intBitsToFloat(1597463007 - (Float.floatToIntBits(x) >> 1)); @@ -176,7 +176,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity } @Redirect(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;hasVehicle()Z", ordinal = 0)) - public boolean removeVehicleRequirement(ClientPlayerEntity instance) { + private boolean removeVehicleRequirement(ClientPlayerEntity instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_20tor1_20_1)) { return false; } @@ -185,7 +185,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity } @Redirect(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isClimbing()Z")) - public boolean removeLadderCheck(ClientPlayerEntity instance) { + private boolean removeLadderCheck(ClientPlayerEntity instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_15_1)) { return false; } @@ -193,7 +193,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity } @Redirect(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;hasVehicle()Z", ordinal = 3)) - public boolean removeVehicleCheck(ClientPlayerEntity instance) { + private boolean removeVehicleCheck(ClientPlayerEntity instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_14_4)) { return false; } @@ -201,7 +201,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity } @ModifyVariable(method = "tickMovement", at = @At(value = "LOAD", ordinal = 4), ordinal = 4) - public boolean removeBl8Boolean(boolean value) { + private boolean removeBl8Boolean(boolean value) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_14_4)) { return false; } @@ -209,7 +209,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity } @Redirect(method = "canStartSprinting", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;isFallFlying()Z")) - public boolean removeElytraMovementCheck(ClientPlayerEntity instance) { + private boolean removeElytraMovementCheck(ClientPlayerEntity instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_3)) { return false; } @@ -217,7 +217,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity } @Redirect(method = "canSprint", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerEntity;hasVehicle()Z")) - public boolean removeVehicleCondition(ClientPlayerEntity instance) { + private boolean removeVehicleCondition(ClientPlayerEntity instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_1tor1_19_2)) { return false; } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCowEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCowEntity.java index bd894b14..6ab852e7 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCowEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCowEntity.java @@ -42,9 +42,10 @@ public abstract class MixinCowEntity extends AnimalEntity { } @Inject(method = "interactMob", at = @At("HEAD"), cancellable = true) - public void injectInteractMob(PlayerEntity player, Hand hand, CallbackInfoReturnable cir) { + private void injectInteractMob(PlayerEntity player, Hand hand, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_15_2) && player.getAbilities().creativeMode) { cir.setReturnValue(super.interactMob(player, hand)); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCreeperEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCreeperEntity.java index 637e1892..20403692 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCreeperEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinCreeperEntity.java @@ -30,13 +30,14 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(CreeperEntity.class) -public class MixinCreeperEntity { +public abstract class MixinCreeperEntity { @Redirect(method = "interactMob", at = @At(value = "FIELD", target = "Lnet/minecraft/sound/SoundEvents;ITEM_FIRECHARGE_USE:Lnet/minecraft/sound/SoundEvent;")) - public SoundEvent fixSound() { + private SoundEvent fixSound() { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_1tor1_19_2)) { return SoundEvents.ITEM_FLINTANDSTEEL_USE; } return SoundEvents.ITEM_FIRECHARGE_USE; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntity.java index 540413db..cea2a7f8 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntity.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.entity; -import de.florianmichael.viafabricplus.definition.EntityHeightOffsetsPre1_20_2; +import de.florianmichael.viafabricplus.fixes.EntityHeightOffsetsPre1_20_2; import net.minecraft.entity.EntityDimensions; import net.raphimc.vialoader.util.VersionEnum; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; @@ -64,7 +64,6 @@ public abstract class MixinEntity { @Shadow public abstract void setVelocity(Vec3d velocity); - @Shadow protected abstract Vector3f getPassengerAttachmentPos(Entity passenger, EntityDimensions dimensions, float scaleFactor); @ModifyConstant(method = "movementInputToVelocity", constant = @Constant(doubleValue = 1E-7)) @@ -76,7 +75,7 @@ public abstract class MixinEntity { } @Inject(method = "getVelocityAffectingPos", at = @At("HEAD"), cancellable = true) - public void replaceAffectingVelocityMagnitude(CallbackInfoReturnable cir) { + private void replaceAffectingVelocityMagnitude(CallbackInfoReturnable cir) { final VersionEnum target = ProtocolHack.getTargetVersion(); if (target.isOlderThanOrEqualTo(VersionEnum.r1_19_4)) { @@ -85,7 +84,7 @@ public abstract class MixinEntity { } @Inject(method = "getRotationVector(FF)Lnet/minecraft/util/math/Vec3d;", at = @At("HEAD"), cancellable = true) - public void revertCalculation(float pitch, float yaw, CallbackInfoReturnable cir) { + private void revertCalculation(float pitch, float yaw, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { cir.setReturnValue(Vec3d.fromPolar(pitch, yaw)); } @@ -151,34 +150,35 @@ public abstract class MixinEntity { } @Inject(method = "getTargetingMargin", at = @At("HEAD"), cancellable = true) - public void expandHitBox(CallbackInfoReturnable cir) { + private void expandHitBox(CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { cir.setReturnValue(0.1F); } } @Redirect(method = {"setYaw", "setPitch"}, at = @At(value = "INVOKE", target = "Ljava/lang/Float;isFinite(F)Z")) - public boolean modifyIsFinite(float f) { + private boolean modifyIsFinite(float f) { return Float.isFinite(f) || ((Object) this instanceof ClientPlayerEntity && ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)); } @ModifyConstant(method = "checkBlockCollision", constant = @Constant(doubleValue = 1.0E-7)) - public double changeBlockCollisionConstant(double constant) { + private double changeBlockCollisionConstant(double constant) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_1tor1_19_2)) { return 0.001; } + return constant; } @Redirect(method = "move", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;onLanding()V")) - public void revertOnLanding(Entity instance) { + private void revertOnLanding(Entity instance) { if (ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(VersionEnum.r1_19)) { instance.onLanding(); } } @Inject(method = "getPosWithYOffset", at = @At("HEAD"), cancellable = true) - public void changeLogic(float offset, CallbackInfoReturnable cir) { + private void changeLogic(float offset, CallbackInfoReturnable cir) { final VersionEnum target = ProtocolHack.getTargetVersion(); if (target.isOlderThanOrEqualTo(VersionEnum.r1_19_4)) { int i = MathHelper.floor(this.pos.x); @@ -198,17 +198,19 @@ public abstract class MixinEntity { } @Inject(method = "getRidingOffset", at = @At("HEAD"), cancellable = true) - public void replaceRidingOffset(Entity vehicle, CallbackInfoReturnable cir) { + private void replaceRidingOffset(Entity vehicle, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_20tor1_20_1)) { cir.setReturnValue((float) EntityHeightOffsetsPre1_20_2.getHeightOffset((Entity) (Object) this)); } } @Redirect(method = "getPassengerRidingPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;getPassengerAttachmentPos(Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/EntityDimensions;F)Lorg/joml/Vector3f;")) - public Vector3f revertStaticRidingOffsetCalculation(Entity instance, Entity passenger, EntityDimensions dimensions, float scaleFactor) { + private Vector3f revertStaticRidingOffsetCalculation(Entity instance, Entity passenger, EntityDimensions dimensions, float scaleFactor) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_20tor1_20_1)) { return EntityHeightOffsetsPre1_20_2.getMountedHeightOffset(instance, passenger); } + return getPassengerAttachmentPos(passenger, dimensions, scaleFactor); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityIndex.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityIndex.java index dc58142e..1d5f031c 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityIndex.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityIndex.java @@ -37,7 +37,7 @@ import java.util.Map; import java.util.UUID; @Mixin(EntityIndex.class) -public class MixinEntityIndex { +public abstract class MixinEntityIndex { @Shadow @Final @@ -54,4 +54,5 @@ public class MixinEntityIndex { cir.setReturnValue(this.idToEntity.size()); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityModels.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityModels.java index 678fcdf9..b7772427 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityModels.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityModels.java @@ -20,7 +20,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.entity; import com.google.common.collect.ImmutableMap; -import de.florianmichael.viafabricplus.definition.model.BoatModel_1_8; +import de.florianmichael.viafabricplus.fixes.model.BoatModel_1_8; import net.minecraft.client.model.TexturedModelData; import net.minecraft.client.render.entity.model.EntityModelLayer; import net.minecraft.client.render.entity.model.EntityModels; @@ -29,10 +29,11 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; @Mixin(EntityModels.class) -public class MixinEntityModels { +public abstract class MixinEntityModels { @ModifyVariable(method = "getModels", at = @At(value = "STORE", ordinal = 0), ordinal = 0) private static ImmutableMap.Builder addBoatModel(ImmutableMap.Builder builder) { return builder.put(BoatModel_1_8.MODEL_LAYER, BoatModel_1_8.getTexturedModelData()); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityPredicates.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityPredicates.java index 9faef76d..ba9a1afa 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityPredicates.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityPredicates.java @@ -29,7 +29,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(EntityPredicates.class) -public class MixinEntityPredicates { +public abstract class MixinEntityPredicates { @SuppressWarnings("target") @Redirect(method = "method_5915(Lnet/minecraft/entity/Entity;Lnet/minecraft/scoreboard/AbstractTeam;Lnet/minecraft/scoreboard/AbstractTeam$CollisionRule;Lnet/minecraft/entity/Entity;)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;isMainPlayer()Z")) @@ -39,4 +39,5 @@ public class MixinEntityPredicates { } return player.isMainPlayer(); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityRenderDispatcher.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityRenderDispatcher.java index b79a6946..dc89a96f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityRenderDispatcher.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinEntityRenderDispatcher.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.entity; -import de.florianmichael.viafabricplus.definition.BoatRenderer_1_8; +import de.florianmichael.viafabricplus.fixes.BoatRenderer_1_8; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import de.florianmichael.viafabricplus.settings.impl.ExperimentalSettings; import net.minecraft.client.render.entity.EntityRenderDispatcher; @@ -38,7 +38,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @Mixin(EntityRenderDispatcher.class) -public class MixinEntityRenderDispatcher { +public abstract class MixinEntityRenderDispatcher { @Unique private BoatRenderer_1_8 viaFabricPlus$boatRenderer; @@ -55,4 +55,5 @@ public class MixinEntityRenderDispatcher { private void onReload(ResourceManager manager, CallbackInfo ci, EntityRendererFactory.Context context) { viaFabricPlus$boatRenderer = new BoatRenderer_1_8(context); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinItemEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinItemEntity.java index fc899f23..8ad86266 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinItemEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinItemEntity.java @@ -29,12 +29,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ItemEntity.class) -public class MixinItemEntity { +public abstract class MixinItemEntity { @Inject(method = "applyWaterBuoyancy", at = @At("HEAD"), cancellable = true) - public void injectApplyWaterBuoyancy(CallbackInfo ci) { + private void dontApplyWaterBuoyancy(CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { ci.cancel(); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLivingEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLivingEntity.java index eb467fd0..f029b7f9 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLivingEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLivingEntity.java @@ -21,7 +21,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.entity; import com.llamalad7.mixinextras.injector.WrapWithCondition; import de.florianmichael.viafabricplus.settings.impl.ExperimentalSettings; -import de.florianmichael.viafabricplus.definition.EntityHeightOffsetsPre1_20_2; +import de.florianmichael.viafabricplus.fixes.EntityHeightOffsetsPre1_20_2; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import net.minecraft.block.BlockState; import net.minecraft.block.TrapdoorBlock; @@ -135,7 +135,7 @@ public abstract class MixinLivingEntity extends Entity { } @ModifyConstant(method = "tickMovement", constant = @Constant(doubleValue = 0.003D)) - public double modifyVelocityZero(final double constant) { + private double modifyVelocityZero(final double constant) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { return 0.005D; } @@ -162,7 +162,7 @@ public abstract class MixinLivingEntity extends Entity { } @Redirect(method = "travel", at = @At(value = "INVOKE", target = "Ljava/lang/Math;cos(D)D")) - public double fixCosTable(double a) { + private double fixCosTable(double a) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_18_2)) { return MathHelper.cos((float) a); } @@ -170,7 +170,7 @@ public abstract class MixinLivingEntity extends Entity { } @Redirect(method = "travel", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;getFluidHeight(Lnet/minecraft/registry/tag/TagKey;)D")) - public double fixLavaMovement(LivingEntity instance, TagKey tagKey) { + private double fixLavaMovement(LivingEntity instance, TagKey tagKey) { double height = instance.getFluidHeight(tagKey); if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_15_2)) { @@ -180,7 +180,7 @@ public abstract class MixinLivingEntity extends Entity { } @ModifyConstant(method = "isBlocking", constant = @Constant(intValue = 5)) - public int shieldBlockCounter(int constant) { + private int shieldBlockCounter(int constant) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { return 0; } @@ -188,7 +188,7 @@ public abstract class MixinLivingEntity extends Entity { } @Redirect(method = "tickCramming", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;isClient()Z")) - public boolean revertOnlyPlayerCramming(World instance) { + private boolean revertOnlyPlayerCramming(World instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_1tor1_19_2)) { return false; } @@ -211,17 +211,19 @@ public abstract class MixinLivingEntity extends Entity { } @Inject(method = "getRidingOffset", at = @At("HEAD"), cancellable = true) - public void replaceRidingOffset(Entity vehicle, CallbackInfoReturnable cir) { + private void replaceRidingOffset(Entity vehicle, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_20tor1_20_1)) { cir.setReturnValue((float) EntityHeightOffsetsPre1_20_2.getHeightOffset(this)); } } @Redirect(method = "getPassengerRidingPos", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;getPassengerAttachmentPos(Lnet/minecraft/entity/Entity;Lnet/minecraft/entity/EntityDimensions;F)Lorg/joml/Vector3f;")) - public Vector3f revertStaticRidingOffsetCalculation(LivingEntity instance, Entity entity, EntityDimensions entityDimensions, float v) { + private Vector3f revertStaticRidingOffsetCalculation(LivingEntity instance, Entity entity, EntityDimensions entityDimensions, float v) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_20tor1_20_1)) { return EntityHeightOffsetsPre1_20_2.getMountedHeightOffset(instance, entity); } + return getPassengerAttachmentPos(entity, entityDimensions, v); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLockableContainerBlockEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLockableContainerBlockEntity.java index 585c8166..c9679777 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLockableContainerBlockEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinLockableContainerBlockEntity.java @@ -31,7 +31,7 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @Mixin(LockableContainerBlockEntity.class) -public class MixinLockableContainerBlockEntity { +public abstract class MixinLockableContainerBlockEntity { /* Workaround for https://github.com/ViaVersion/ViaFabricPlus/issues/223 @@ -45,7 +45,7 @@ public class MixinLockableContainerBlockEntity { */ @WrapOperation(method = "readNbt", at = @At(value = "INVOKE", target = "Lnet/minecraft/text/Text$Serializer;fromJson(Ljava/lang/String;)Lnet/minecraft/text/MutableText;")) - public MutableText allowInvalidJson(String json, Operation operation) { + private MutableText allowInvalidJson(String json, Operation operation) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { try { return operation.call(json); @@ -56,4 +56,5 @@ public class MixinLockableContainerBlockEntity { return operation.call(json); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinOtherClientPlayerEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinOtherClientPlayerEntity.java index 6f821d83..0297c3cc 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinOtherClientPlayerEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinOtherClientPlayerEntity.java @@ -32,16 +32,17 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(OtherClientPlayerEntity.class) -public class MixinOtherClientPlayerEntity extends AbstractClientPlayerEntity { +public abstract class MixinOtherClientPlayerEntity extends AbstractClientPlayerEntity { public MixinOtherClientPlayerEntity(ClientWorld world, GameProfile profile) { super(world, profile); } @Inject(method = "updatePose", at = @At("HEAD")) - public void injectUpdatePose(CallbackInfo ci) { + private void dontUpdatePose(CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_13_2)) { super.updatePose(); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPiglinEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPiglinEntity.java index 1e4a4af5..2dfab301 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPiglinEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPiglinEntity.java @@ -37,9 +37,10 @@ public abstract class MixinPiglinEntity { @Shadow public abstract boolean isBaby(); @Inject(method = "getActiveEyeHeight", at = @At("HEAD"), cancellable = true) - public void changeEyeHeight(EntityPose pose, EntityDimensions dimensions, CallbackInfoReturnable cir) { + private void changeEyeHeight(EntityPose pose, EntityDimensions dimensions, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_1tor1_19_2)) { cir.setReturnValue(this.isBaby() ? 0.93F : 1.74F); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPlayerEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPlayerEntity.java index 29587262..c03c4794 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPlayerEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinPlayerEntity.java @@ -47,10 +47,10 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; public abstract class MixinPlayerEntity extends LivingEntity { @Unique - private final static EntityDimensions viaFabricPlus$sneaking_dimensions_v1_13_2 = EntityDimensions.changing(0.6f, 1.65f); + private static final EntityDimensions viaFabricPlus$sneaking_dimensions_v1_13_2 = EntityDimensions.changing(0.6f, 1.65f); @Unique - private final static SoundEvent viaFabricPlus$random_hurt = SoundEvent.of(new Identifier("viafabricplus", "random.hurt")); + private static final SoundEvent viaFabricPlus$random_hurt = SoundEvent.of(new Identifier("viafabricplus", "random.hurt")); @Shadow @Final @@ -102,7 +102,7 @@ public abstract class MixinPlayerEntity extends LivingEntity { } @Inject(method = "getHurtSound", at = @At("HEAD"), cancellable = true) - public void replaceSound(DamageSource source, CallbackInfoReturnable cir) { + private void replaceSound(DamageSource source, CallbackInfoReturnable cir) { if (VisualSettings.INSTANCE.replaceHurtSoundWithOOFSound.isEnabled()) { cir.setReturnValue(viaFabricPlus$random_hurt); } @@ -118,7 +118,7 @@ public abstract class MixinPlayerEntity extends LivingEntity { } @Redirect(method = "dropItem(Lnet/minecraft/item/ItemStack;ZZ)Lnet/minecraft/entity/ItemEntity;", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;swingHand(Lnet/minecraft/util/Hand;)V")) - public void dontSwingHand(PlayerEntity instance, Hand hand) { + private void dontSwingHand(PlayerEntity instance, Hand hand) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_15_2)) return; instance.swingHand(hand); @@ -128,12 +128,12 @@ public abstract class MixinPlayerEntity extends LivingEntity { public boolean viaFabricPlus$isSprinting; @Inject(method = "tickMovement", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;setMovementSpeed(F)V")) - public void trackOldField(CallbackInfo ci) { + private void trackOldField(CallbackInfo ci) { viaFabricPlus$isSprinting = this.isSprinting(); } @Redirect(method = "getOffGroundSpeed", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;isSprinting()Z")) - public boolean useOldField(PlayerEntity instance) { + private boolean useOldField(PlayerEntity instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_3)) { return viaFabricPlus$isSprinting; } @@ -141,10 +141,11 @@ public abstract class MixinPlayerEntity extends LivingEntity { } @Inject(method = "checkFallFlying", at = @At("HEAD"), cancellable = true) - public void makeElytraMovementServerside(CallbackInfoReturnable cir) { + private void makeElytraMovementServerside(CallbackInfoReturnable cir) { // Elytra movement was serverside in <= 1.14.4 and got moved to the client in 1.15 if ((Object) this instanceof ClientPlayerEntity && ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_14_4)) { cir.setReturnValue(!this.isOnGround() && this.getVelocity().y < 0.0 && !isFallFlying()); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinSquidEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinSquidEntity.java index 7412e61f..5379d648 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinSquidEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinSquidEntity.java @@ -30,12 +30,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(SquidEntity.class) -public class MixinSquidEntity { +public abstract class MixinSquidEntity { @Inject(method = "canBeLeashedBy", at = @At("HEAD"), cancellable = true) - public void injectCanBeLeashedBy(PlayerEntity player, CallbackInfoReturnable cir) { + private void injectCanBeLeashedBy(PlayerEntity player, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_16_4tor1_16_5)) { cir.setReturnValue(false); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVexEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVexEntity.java index 6f4a57a9..1eb55d29 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVexEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinVexEntity.java @@ -31,16 +31,17 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(VexEntity.class) -public class MixinVexEntity extends HostileEntity { +public abstract class MixinVexEntity extends HostileEntity { public MixinVexEntity(EntityType entityType, World world) { super(entityType, world); } @Inject(method = "getUnscaledRidingOffset", at = @At("HEAD"), cancellable = true) - public void changeHeightOffset(CallbackInfoReturnable cir) { + private void changeHeightOffset(CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_1tor1_19_2)) { cir.setReturnValue(0.0); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinWolfEntity.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinWolfEntity.java index fbe1c562..49ecc45f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinWolfEntity.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/entity/MixinWolfEntity.java @@ -20,7 +20,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.entity; import net.raphimc.vialoader.util.VersionEnum; -import de.florianmichael.viafabricplus.definition.tracker.WolfHealthTracker; +import de.florianmichael.viafabricplus.fixes.tracker.WolfHealthTracker; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import net.minecraft.entity.passive.WolfEntity; import org.spongepowered.asm.mixin.Mixin; @@ -29,10 +29,10 @@ import org.spongepowered.asm.mixin.injection.Redirect; @SuppressWarnings("DataFlowIssue") @Mixin(WolfEntity.class) -public class MixinWolfEntity { +public abstract class MixinWolfEntity { @Redirect(method = "*", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/passive/WolfEntity;getHealth()F")) - public float rewriteHealth(WolfEntity instance) { + private float rewriteHealth(WolfEntity instance) { float health = instance.getHealth(); if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_14_4)) { return WolfHealthTracker.get().getHealthDataMap().getOrDefault(instance.getId(), health); @@ -40,4 +40,5 @@ public class MixinWolfEntity { return health; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinCamera.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinCamera.java index 0821ec13..c84afecd 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinCamera.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinCamera.java @@ -31,7 +31,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(Camera.class) -public class MixinCamera { +public abstract class MixinCamera { @Shadow private float cameraY; @@ -43,14 +43,14 @@ public class MixinCamera { private Entity focusedEntity; @Inject(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;setPos(DDD)V", shift = At.Shift.BEFORE)) - public void onUpdateHeight(BlockView area, Entity focusedEntity, boolean thirdPerson, boolean inverseView, float tickDelta, CallbackInfo ci) { + private void onUpdateHeight(BlockView area, Entity focusedEntity, boolean thirdPerson, boolean inverseView, float tickDelta, CallbackInfo ci) { if (!DebugSettings.INSTANCE.replaceSneaking.isEnabled() && DebugSettings.INSTANCE.sneakInstant.isEnabled()) { cameraY = lastCameraY = focusedEntity.getStandingEyeHeight(); } } @Inject(method = "updateEyeHeight", at = @At(value = "HEAD"), cancellable = true) - public void onUpdateEyeHeight(CallbackInfo ci) { + private void onUpdateEyeHeight(CallbackInfo ci) { if (this.focusedEntity == null) return; if (DebugSettings.INSTANCE.replaceSneaking.isEnabled()) { diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinKeyboardInput.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinKeyboardInput.java index 9847765a..4e8b204a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinKeyboardInput.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/input/MixinKeyboardInput.java @@ -30,7 +30,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyVariable; @Mixin(KeyboardInput.class) -public class MixinKeyboardInput extends Input { +public abstract class MixinKeyboardInput extends Input { @ModifyVariable(method = "tick", at = @At(value = "LOAD", ordinal = 0), argsOnly = true) private boolean injectTick(boolean slowDown) { @@ -41,4 +41,5 @@ public class MixinKeyboardInput extends Input { } return slowDown; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinAxeItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinAxeItem.java index 608be9be..bc3d2bc4 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinAxeItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinAxeItem.java @@ -31,12 +31,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(AxeItem.class) -public class MixinAxeItem { +public abstract class MixinAxeItem { @Inject(method = "useOnBlock", at = @At("HEAD"), cancellable = true) - public void injectUseOnBlock(ItemUsageContext context, CallbackInfoReturnable cir) { + private void alwaysPassInteraction(ItemUsageContext context, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_2)) { cir.setReturnValue(ActionResult.PASS); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinBlockItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinBlockItem.java index d32efabf..9ffa54d7 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinBlockItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinBlockItem.java @@ -38,7 +38,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(BlockItem.class) -public class MixinBlockItem { +public abstract class MixinBlockItem { @Inject(method = "canPlace", at = @At("HEAD"), cancellable = true) private void injectCanPlace(ItemPlacementContext context, BlockState state, CallbackInfoReturnable ci) { @@ -65,4 +65,5 @@ public class MixinBlockItem { } } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinBrushItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinBrushItem.java index b570c5c2..b84a2145 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinBrushItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinBrushItem.java @@ -29,12 +29,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(BrushItem.class) -public class MixinBrushItem { +public abstract class MixinBrushItem { @Inject(method = "getMaxUseTime", at = @At("HEAD"), cancellable = true) - public void changeMaxUseTime(ItemStack stack, CallbackInfoReturnable cir) { + private void changeMaxUseTime(ItemStack stack, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_4)) { cir.setReturnValue(225); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinEnderPearlItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinEnderPearlItem.java index ffb879cb..9054d3f9 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinEnderPearlItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinEnderPearlItem.java @@ -34,7 +34,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(EnderPearlItem.class) -public class MixinEnderPearlItem { +public abstract class MixinEnderPearlItem { @Inject(method = "use", at = @At("HEAD"), cancellable = true) private void injectUse(World world, PlayerEntity user, Hand hand, CallbackInfoReturnable> ci) { @@ -42,4 +42,5 @@ public class MixinEnderPearlItem { ci.setReturnValue(TypedActionResult.pass(user.getStackInHand(hand))); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinFireworkRocketItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinFireworkRocketItem.java index 02b3c269..0db72639 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinFireworkRocketItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinFireworkRocketItem.java @@ -29,7 +29,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(FireworkRocketItem.class) -public class MixinFireworkRocketItem { +public abstract class MixinFireworkRocketItem { @Redirect(method = "use", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;isFallFlying()Z", ordinal = 0)) private boolean disableFireworkElytraBoost(PlayerEntity player) { @@ -39,4 +39,5 @@ public class MixinFireworkRocketItem { return player.isFallFlying(); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinHeldItemRenderer.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinHeldItemRenderer.java index becb4fa4..4809f9de 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinHeldItemRenderer.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinHeldItemRenderer.java @@ -60,4 +60,5 @@ public abstract class MixinHeldItemRenderer { matrices.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(78.05f)); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinHoeItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinHoeItem.java index ee3121a0..34769045 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinHoeItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinHoeItem.java @@ -39,7 +39,7 @@ import java.util.Set; public abstract class MixinHoeItem extends MiningToolItem { @Unique - private final static Set viaFabricPlus$EFFECTIVE_BLOCKS_1165 = ImmutableSet.of( + private static final Set viaFabricPlus$EFFECTIVE_BLOCKS_1165 = ImmutableSet.of( Blocks.NETHER_WART_BLOCK, Blocks.WARPED_WART_BLOCK, Blocks.HAY_BLOCK, @@ -79,4 +79,5 @@ public abstract class MixinHoeItem extends MiningToolItem { } return super.getMiningSpeedMultiplier(stack, state); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItem.java index c5bb1be1..6ea27980 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItem.java @@ -30,15 +30,16 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(Item.class) -public class MixinItem { +public abstract class MixinItem { @Shadow @Final private int maxDamage; @Redirect(method = { "getMaxDamage", "isDamageable", "getItemBarStep", "getItemBarColor" }, at = @At(value = "FIELD", target = "Lnet/minecraft/item/Item;maxDamage:I")) - public int changeCrossbowDamage(Item instance) { + private int changeCrossbowDamage(Item instance) { if (instance instanceof CrossbowItem && ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_17_1)) { return 326; } return maxDamage; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemCooldownManager.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemCooldownManager.java index 918d698d..7f686980 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemCooldownManager.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemCooldownManager.java @@ -28,12 +28,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(value = ItemCooldownManager.class) -public class MixinItemCooldownManager { +public abstract class MixinItemCooldownManager { @Inject(method = "set", at = @At("HEAD"), cancellable = true) - public void injectSet(Item item, int duration, CallbackInfo ci) { + private void dontSetCooldown(Item item, int duration, CallbackInfo ci) { if (DebugSettings.INSTANCE.removeCooldowns.isEnabled()) { ci.cancel(); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemGroup_EntriesImpl.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemGroup_EntriesImpl.java index b6c40b54..e368b30a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemGroup_EntriesImpl.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemGroup_EntriesImpl.java @@ -33,12 +33,12 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(targets = "net.minecraft.item.ItemGroup$EntriesImpl") -public class MixinItemGroup_EntriesImpl { +public abstract class MixinItemGroup_EntriesImpl { @Shadow @Final private ItemGroup group; @Redirect(method = "add", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/Item;isEnabled(Lnet/minecraft/resource/featuretoggle/FeatureSet;)Z")) - public boolean removeUnknownItems(Item instance, FeatureSet featureSet) { + private boolean removeUnknownItems(Item instance, FeatureSet featureSet) { final var index = GeneralSettings.INSTANCE.removeNotAvailableItemsFromCreativeTab.getIndex(); if (index == 2 || MinecraftClient.getInstance().isInSingleplayer()) return instance.isEnabled(featureSet); @@ -49,4 +49,5 @@ public class MixinItemGroup_EntriesImpl { } return false; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemGroups.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemGroups.java index 1a5e89df..01b73743 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemGroups.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemGroups.java @@ -40,7 +40,7 @@ public abstract class MixinItemGroups { @Shadow @Nullable private static ItemGroup.@Nullable DisplayContext displayContext; @Shadow - protected static void updateEntries(ItemGroup.DisplayContext displayContext) { + private static void updateEntries(ItemGroup.DisplayContext displayContext) { } @Unique private static VersionEnum viaFabricPlus$version; @@ -60,4 +60,5 @@ public abstract class MixinItemGroups { cir.setReturnValue(true); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemPlacementContext.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemPlacementContext.java index 17b43d44..5b7dd819 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemPlacementContext.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemPlacementContext.java @@ -32,7 +32,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ItemPlacementContext.class) -public class MixinItemPlacementContext { +public abstract class MixinItemPlacementContext { @Inject(method = "getPlayerLookDirection", at = @At("HEAD"), cancellable = true) private void injectGetPlayerLookDirection(CallbackInfoReturnable ci) { @@ -60,4 +60,5 @@ public class MixinItemPlacementContext { ci.setReturnValue(player.getHorizontalFacing()); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemRenderer.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemRenderer.java index 6f3235e9..11f23674 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemRenderer.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemRenderer.java @@ -35,14 +35,15 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(ItemRenderer.class) -public class MixinItemRenderer { +public abstract class MixinItemRenderer { @Shadow @Final private ItemModels models; @Inject(method = "getModel", at = @At("HEAD"), cancellable = true) - public void removeModel(ItemStack stack, World world, LivingEntity entity, int seed, CallbackInfoReturnable cir) { + private void removeModel(ItemStack stack, World world, LivingEntity entity, int seed, CallbackInfoReturnable cir) { if (VisualSettings.INSTANCE.replacePetrifiedOakSlab.isEnabled() && world != null /* world is null in gui rendering */ && stack.isOf(Items.PETRIFIED_OAK_SLAB)) { cir.setReturnValue(this.models.getModelManager().getMissingModel()); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemStack.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemStack.java index 51e703f5..d0f69432 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemStack.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinItemStack.java @@ -54,7 +54,7 @@ public abstract class MixinItemStack { @Shadow @Final @Deprecated private @Nullable Item item; @Inject(method = "isEmpty", at = @At("HEAD"), cancellable = true) - public void dontRecalculateState(CallbackInfoReturnable cir) { + private void dontRecalculateState(CallbackInfoReturnable cir) { if (MinecraftClient.getInstance() != null && ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_10)) { final ItemStack self = (ItemStack) (Object) this; @@ -126,4 +126,5 @@ public abstract class MixinItemStack { return OptionalDouble.empty(); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinMiningToolItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinMiningToolItem.java index 008fd62c..c165f1ed 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinMiningToolItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinMiningToolItem.java @@ -32,13 +32,14 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(MiningToolItem.class) -public class MixinMiningToolItem { +public abstract class MixinMiningToolItem { @Inject(method = "getMiningSpeedMultiplier", at = @At("RETURN"), cancellable = true) - public void changeHoeEffectiveBlocks(ItemStack stack, BlockState state, CallbackInfoReturnable cir) { + private void changeHoeEffectiveBlocks(ItemStack stack, BlockState state, CallbackInfoReturnable cir) { //noinspection ConstantValue if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_15_2) && (Object) this instanceof HoeItem) { cir.setReturnValue(1.0F); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinPickaxeItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinPickaxeItem.java index 83ad367d..922660cf 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinPickaxeItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinPickaxeItem.java @@ -39,13 +39,13 @@ import java.util.Set; public abstract class MixinPickaxeItem extends MiningToolItem { @Unique - private final static Set viaFabricPlus$EFFECTIVE_BLOCKS_1165 = ImmutableSet.of(Blocks.ACTIVATOR_RAIL, Blocks.COAL_ORE, Blocks.COBBLESTONE, Blocks.DETECTOR_RAIL, Blocks.DIAMOND_BLOCK, Blocks.DIAMOND_ORE, Blocks.POWERED_RAIL, Blocks.GOLD_BLOCK, Blocks.GOLD_ORE, Blocks.NETHER_GOLD_ORE, Blocks.ICE, Blocks.IRON_BLOCK, Blocks.IRON_ORE, Blocks.LAPIS_BLOCK, Blocks.LAPIS_ORE, Blocks.MOSSY_COBBLESTONE, Blocks.NETHERRACK, Blocks.PACKED_ICE, Blocks.BLUE_ICE, Blocks.RAIL, Blocks.REDSTONE_ORE, Blocks.SANDSTONE, Blocks.CHISELED_SANDSTONE, Blocks.CUT_SANDSTONE, Blocks.CHISELED_RED_SANDSTONE, Blocks.CUT_RED_SANDSTONE, Blocks.RED_SANDSTONE, Blocks.STONE, Blocks.GRANITE, Blocks.POLISHED_GRANITE, Blocks.DIORITE, Blocks.POLISHED_DIORITE, Blocks.ANDESITE, Blocks.POLISHED_ANDESITE, Blocks.STONE_SLAB, Blocks.SMOOTH_STONE_SLAB, Blocks.SANDSTONE_SLAB, Blocks.PETRIFIED_OAK_SLAB, Blocks.COBBLESTONE_SLAB, Blocks.BRICK_SLAB, Blocks.STONE_BRICK_SLAB, Blocks.NETHER_BRICK_SLAB, Blocks.QUARTZ_SLAB, Blocks.RED_SANDSTONE_SLAB, Blocks.PURPUR_SLAB, Blocks.SMOOTH_QUARTZ, Blocks.SMOOTH_RED_SANDSTONE, Blocks.SMOOTH_SANDSTONE, Blocks.SMOOTH_STONE, Blocks.STONE_BUTTON, Blocks.STONE_PRESSURE_PLATE, Blocks.POLISHED_GRANITE_SLAB, Blocks.SMOOTH_RED_SANDSTONE_SLAB, Blocks.MOSSY_STONE_BRICK_SLAB, Blocks.POLISHED_DIORITE_SLAB, Blocks.MOSSY_COBBLESTONE_SLAB, Blocks.END_STONE_BRICK_SLAB, Blocks.SMOOTH_SANDSTONE_SLAB, Blocks.SMOOTH_QUARTZ_SLAB, Blocks.GRANITE_SLAB, Blocks.ANDESITE_SLAB, Blocks.RED_NETHER_BRICK_SLAB, Blocks.POLISHED_ANDESITE_SLAB, Blocks.DIORITE_SLAB, Blocks.SHULKER_BOX, Blocks.BLACK_SHULKER_BOX, Blocks.BLUE_SHULKER_BOX, Blocks.BROWN_SHULKER_BOX, Blocks.CYAN_SHULKER_BOX, Blocks.GRAY_SHULKER_BOX, Blocks.GREEN_SHULKER_BOX, Blocks.LIGHT_BLUE_SHULKER_BOX, Blocks.LIGHT_GRAY_SHULKER_BOX, Blocks.LIME_SHULKER_BOX, Blocks.MAGENTA_SHULKER_BOX, Blocks.ORANGE_SHULKER_BOX, Blocks.PINK_SHULKER_BOX, Blocks.PURPLE_SHULKER_BOX, Blocks.RED_SHULKER_BOX, Blocks.WHITE_SHULKER_BOX, Blocks.YELLOW_SHULKER_BOX, Blocks.PISTON, Blocks.STICKY_PISTON, Blocks.PISTON_HEAD); + private static final Set viaFabricPlus$EFFECTIVE_BLOCKS_1165 = ImmutableSet.of(Blocks.ACTIVATOR_RAIL, Blocks.COAL_ORE, Blocks.COBBLESTONE, Blocks.DETECTOR_RAIL, Blocks.DIAMOND_BLOCK, Blocks.DIAMOND_ORE, Blocks.POWERED_RAIL, Blocks.GOLD_BLOCK, Blocks.GOLD_ORE, Blocks.NETHER_GOLD_ORE, Blocks.ICE, Blocks.IRON_BLOCK, Blocks.IRON_ORE, Blocks.LAPIS_BLOCK, Blocks.LAPIS_ORE, Blocks.MOSSY_COBBLESTONE, Blocks.NETHERRACK, Blocks.PACKED_ICE, Blocks.BLUE_ICE, Blocks.RAIL, Blocks.REDSTONE_ORE, Blocks.SANDSTONE, Blocks.CHISELED_SANDSTONE, Blocks.CUT_SANDSTONE, Blocks.CHISELED_RED_SANDSTONE, Blocks.CUT_RED_SANDSTONE, Blocks.RED_SANDSTONE, Blocks.STONE, Blocks.GRANITE, Blocks.POLISHED_GRANITE, Blocks.DIORITE, Blocks.POLISHED_DIORITE, Blocks.ANDESITE, Blocks.POLISHED_ANDESITE, Blocks.STONE_SLAB, Blocks.SMOOTH_STONE_SLAB, Blocks.SANDSTONE_SLAB, Blocks.PETRIFIED_OAK_SLAB, Blocks.COBBLESTONE_SLAB, Blocks.BRICK_SLAB, Blocks.STONE_BRICK_SLAB, Blocks.NETHER_BRICK_SLAB, Blocks.QUARTZ_SLAB, Blocks.RED_SANDSTONE_SLAB, Blocks.PURPUR_SLAB, Blocks.SMOOTH_QUARTZ, Blocks.SMOOTH_RED_SANDSTONE, Blocks.SMOOTH_SANDSTONE, Blocks.SMOOTH_STONE, Blocks.STONE_BUTTON, Blocks.STONE_PRESSURE_PLATE, Blocks.POLISHED_GRANITE_SLAB, Blocks.SMOOTH_RED_SANDSTONE_SLAB, Blocks.MOSSY_STONE_BRICK_SLAB, Blocks.POLISHED_DIORITE_SLAB, Blocks.MOSSY_COBBLESTONE_SLAB, Blocks.END_STONE_BRICK_SLAB, Blocks.SMOOTH_SANDSTONE_SLAB, Blocks.SMOOTH_QUARTZ_SLAB, Blocks.GRANITE_SLAB, Blocks.ANDESITE_SLAB, Blocks.RED_NETHER_BRICK_SLAB, Blocks.POLISHED_ANDESITE_SLAB, Blocks.DIORITE_SLAB, Blocks.SHULKER_BOX, Blocks.BLACK_SHULKER_BOX, Blocks.BLUE_SHULKER_BOX, Blocks.BROWN_SHULKER_BOX, Blocks.CYAN_SHULKER_BOX, Blocks.GRAY_SHULKER_BOX, Blocks.GREEN_SHULKER_BOX, Blocks.LIGHT_BLUE_SHULKER_BOX, Blocks.LIGHT_GRAY_SHULKER_BOX, Blocks.LIME_SHULKER_BOX, Blocks.MAGENTA_SHULKER_BOX, Blocks.ORANGE_SHULKER_BOX, Blocks.PINK_SHULKER_BOX, Blocks.PURPLE_SHULKER_BOX, Blocks.RED_SHULKER_BOX, Blocks.WHITE_SHULKER_BOX, Blocks.YELLOW_SHULKER_BOX, Blocks.PISTON, Blocks.STICKY_PISTON, Blocks.PISTON_HEAD); @Unique - private final static Set viaFabricPlus$EFFECTIVE_MATERIALS = ImmutableSet.of(Blocks.STONE, Blocks.GRANITE, Blocks.POLISHED_GRANITE, Blocks.DIORITE, Blocks.POLISHED_DIORITE, Blocks.ANDESITE, Blocks.POLISHED_ANDESITE, Blocks.COBBLESTONE, Blocks.BEDROCK, Blocks.GOLD_ORE, Blocks.DEEPSLATE_GOLD_ORE, Blocks.IRON_ORE, Blocks.DEEPSLATE_IRON_ORE, Blocks.COAL_ORE, Blocks.DEEPSLATE_COAL_ORE, Blocks.NETHER_GOLD_ORE, Blocks.LAPIS_ORE, Blocks.DEEPSLATE_LAPIS_ORE, Blocks.LAPIS_BLOCK, Blocks.DISPENSER, Blocks.SANDSTONE, Blocks.CHISELED_SANDSTONE, Blocks.CUT_SANDSTONE, Blocks.GOLD_BLOCK, Blocks.IRON_BLOCK, Blocks.BRICKS, Blocks.MOSSY_COBBLESTONE, Blocks.OBSIDIAN, Blocks.SPAWNER, Blocks.DIAMOND_ORE, Blocks.DEEPSLATE_DIAMOND_ORE, Blocks.DIAMOND_BLOCK, Blocks.FURNACE, Blocks.COBBLESTONE_STAIRS, Blocks.STONE_PRESSURE_PLATE, Blocks.IRON_DOOR, Blocks.REDSTONE_ORE, Blocks.DEEPSLATE_REDSTONE_ORE, Blocks.NETHERRACK, Blocks.BASALT, Blocks.POLISHED_BASALT, Blocks.STONE_BRICKS, Blocks.MOSSY_STONE_BRICKS, Blocks.CRACKED_STONE_BRICKS, Blocks.CHISELED_STONE_BRICKS, Blocks.MUD_BRICKS, Blocks.IRON_BARS, Blocks.CHAIN, Blocks.BRICK_STAIRS, Blocks.STONE_BRICK_STAIRS, Blocks.MUD_BRICK_STAIRS, Blocks.NETHER_BRICKS, Blocks.NETHER_BRICK_FENCE, Blocks.NETHER_BRICK_STAIRS, Blocks.ENCHANTING_TABLE, Blocks.BREWING_STAND, Blocks.CAULDRON, Blocks.WATER_CAULDRON, Blocks.LAVA_CAULDRON, Blocks.POWDER_SNOW_CAULDRON, Blocks.END_PORTAL_FRAME, Blocks.END_STONE, Blocks.SANDSTONE_STAIRS, Blocks.EMERALD_ORE, Blocks.DEEPSLATE_EMERALD_ORE, Blocks.ENDER_CHEST, Blocks.EMERALD_BLOCK, Blocks.COMMAND_BLOCK, Blocks.COBBLESTONE_WALL, Blocks.MOSSY_COBBLESTONE_WALL, Blocks.ANVIL, Blocks.CHIPPED_ANVIL, Blocks.DAMAGED_ANVIL, Blocks.LIGHT_WEIGHTED_PRESSURE_PLATE, Blocks.HEAVY_WEIGHTED_PRESSURE_PLATE, Blocks.REDSTONE_BLOCK, Blocks.NETHER_QUARTZ_ORE, Blocks.HOPPER, Blocks.QUARTZ_BLOCK, Blocks.CHISELED_QUARTZ_BLOCK, Blocks.QUARTZ_PILLAR, Blocks.QUARTZ_STAIRS, Blocks.DROPPER, Blocks.WHITE_TERRACOTTA, Blocks.ORANGE_TERRACOTTA, Blocks.MAGENTA_TERRACOTTA, Blocks.LIGHT_BLUE_TERRACOTTA, Blocks.YELLOW_TERRACOTTA, Blocks.LIME_TERRACOTTA, Blocks.PINK_TERRACOTTA, Blocks.GRAY_TERRACOTTA, Blocks.LIGHT_GRAY_TERRACOTTA, Blocks.CYAN_TERRACOTTA, Blocks.PURPLE_TERRACOTTA, Blocks.BLUE_TERRACOTTA, Blocks.BROWN_TERRACOTTA, Blocks.GREEN_TERRACOTTA, Blocks.RED_TERRACOTTA, Blocks.BLACK_TERRACOTTA, Blocks.IRON_TRAPDOOR, Blocks.PRISMARINE, Blocks.PRISMARINE_BRICKS, Blocks.DARK_PRISMARINE, Blocks.PRISMARINE_STAIRS, Blocks.PRISMARINE_BRICK_STAIRS, Blocks.DARK_PRISMARINE_STAIRS, Blocks.PRISMARINE_SLAB, Blocks.PRISMARINE_BRICK_SLAB, Blocks.DARK_PRISMARINE_SLAB, Blocks.TERRACOTTA, Blocks.COAL_BLOCK, Blocks.RED_SANDSTONE, Blocks.CHISELED_RED_SANDSTONE, Blocks.CUT_RED_SANDSTONE, Blocks.RED_SANDSTONE_STAIRS, Blocks.STONE_SLAB, Blocks.SMOOTH_STONE_SLAB, Blocks.SANDSTONE_SLAB, Blocks.CUT_SANDSTONE_SLAB, Blocks.PETRIFIED_OAK_SLAB, Blocks.COBBLESTONE_SLAB, Blocks.BRICK_SLAB, Blocks.STONE_BRICK_SLAB, Blocks.MUD_BRICK_SLAB, Blocks.NETHER_BRICK_SLAB, Blocks.QUARTZ_SLAB, Blocks.RED_SANDSTONE_SLAB, Blocks.CUT_RED_SANDSTONE_SLAB, Blocks.PURPUR_SLAB, Blocks.SMOOTH_STONE, Blocks.SMOOTH_SANDSTONE, Blocks.SMOOTH_QUARTZ, Blocks.SMOOTH_RED_SANDSTONE, Blocks.PURPUR_BLOCK, Blocks.PURPUR_PILLAR, Blocks.PURPUR_STAIRS, Blocks.END_STONE_BRICKS, Blocks.REPEATING_COMMAND_BLOCK, Blocks.CHAIN_COMMAND_BLOCK, Blocks.MAGMA_BLOCK, Blocks.RED_NETHER_BRICKS, Blocks.BONE_BLOCK, Blocks.OBSERVER, Blocks.WHITE_GLAZED_TERRACOTTA, Blocks.ORANGE_GLAZED_TERRACOTTA, Blocks.MAGENTA_GLAZED_TERRACOTTA, Blocks.LIGHT_BLUE_GLAZED_TERRACOTTA, Blocks.YELLOW_GLAZED_TERRACOTTA, Blocks.LIME_GLAZED_TERRACOTTA, Blocks.PINK_GLAZED_TERRACOTTA, Blocks.GRAY_GLAZED_TERRACOTTA, Blocks.LIGHT_GRAY_GLAZED_TERRACOTTA, Blocks.CYAN_GLAZED_TERRACOTTA, Blocks.PURPLE_GLAZED_TERRACOTTA, Blocks.BLUE_GLAZED_TERRACOTTA, Blocks.BROWN_GLAZED_TERRACOTTA, Blocks.GREEN_GLAZED_TERRACOTTA, Blocks.RED_GLAZED_TERRACOTTA, Blocks.BLACK_GLAZED_TERRACOTTA, Blocks.WHITE_CONCRETE, Blocks.ORANGE_CONCRETE, Blocks.MAGENTA_CONCRETE, Blocks.LIGHT_BLUE_CONCRETE, Blocks.YELLOW_CONCRETE, Blocks.LIME_CONCRETE, Blocks.PINK_CONCRETE, Blocks.GRAY_CONCRETE, Blocks.LIGHT_GRAY_CONCRETE, Blocks.CYAN_CONCRETE, Blocks.PURPLE_CONCRETE, Blocks.BLUE_CONCRETE, Blocks.BROWN_CONCRETE, Blocks.GREEN_CONCRETE, Blocks.RED_CONCRETE, Blocks.BLACK_CONCRETE, Blocks.DEAD_TUBE_CORAL_BLOCK, Blocks.DEAD_BRAIN_CORAL_BLOCK, Blocks.DEAD_BUBBLE_CORAL_BLOCK, Blocks.DEAD_FIRE_CORAL_BLOCK, Blocks.DEAD_HORN_CORAL_BLOCK, Blocks.TUBE_CORAL_BLOCK, Blocks.BRAIN_CORAL_BLOCK, Blocks.BUBBLE_CORAL_BLOCK, Blocks.FIRE_CORAL_BLOCK, Blocks.HORN_CORAL_BLOCK, Blocks.DEAD_TUBE_CORAL, Blocks.DEAD_BRAIN_CORAL, Blocks.DEAD_BUBBLE_CORAL, Blocks.DEAD_FIRE_CORAL, Blocks.DEAD_HORN_CORAL, Blocks.DEAD_TUBE_CORAL_FAN, Blocks.DEAD_BRAIN_CORAL_FAN, Blocks.DEAD_BUBBLE_CORAL_FAN, Blocks.DEAD_FIRE_CORAL_FAN, Blocks.DEAD_HORN_CORAL_FAN, Blocks.DEAD_TUBE_CORAL_WALL_FAN, Blocks.DEAD_BRAIN_CORAL_WALL_FAN, Blocks.DEAD_BUBBLE_CORAL_WALL_FAN, Blocks.DEAD_FIRE_CORAL_WALL_FAN, Blocks.DEAD_HORN_CORAL_WALL_FAN, Blocks.POLISHED_GRANITE_STAIRS, Blocks.SMOOTH_RED_SANDSTONE_STAIRS, Blocks.MOSSY_STONE_BRICK_STAIRS, Blocks.POLISHED_DIORITE_STAIRS, Blocks.MOSSY_COBBLESTONE_STAIRS, Blocks.END_STONE_BRICK_STAIRS, Blocks.STONE_STAIRS, Blocks.SMOOTH_SANDSTONE_STAIRS, Blocks.SMOOTH_QUARTZ_STAIRS, Blocks.GRANITE_STAIRS, Blocks.ANDESITE_STAIRS, Blocks.RED_NETHER_BRICK_STAIRS, Blocks.POLISHED_ANDESITE_STAIRS, Blocks.DIORITE_STAIRS, Blocks.POLISHED_GRANITE_SLAB, Blocks.SMOOTH_RED_SANDSTONE_SLAB, Blocks.MOSSY_STONE_BRICK_SLAB, Blocks.POLISHED_DIORITE_SLAB, Blocks.MOSSY_COBBLESTONE_SLAB, Blocks.END_STONE_BRICK_SLAB, Blocks.SMOOTH_SANDSTONE_SLAB, Blocks.SMOOTH_QUARTZ_SLAB, Blocks.GRANITE_SLAB, Blocks.ANDESITE_SLAB, Blocks.RED_NETHER_BRICK_SLAB, Blocks.POLISHED_ANDESITE_SLAB, Blocks.DIORITE_SLAB, Blocks.BRICK_WALL, Blocks.PRISMARINE_WALL, Blocks.RED_SANDSTONE_WALL, Blocks.MOSSY_STONE_BRICK_WALL, Blocks.GRANITE_WALL, Blocks.STONE_BRICK_WALL, Blocks.MUD_BRICK_WALL, Blocks.NETHER_BRICK_WALL, Blocks.ANDESITE_WALL, Blocks.RED_NETHER_BRICK_WALL, Blocks.SANDSTONE_WALL, Blocks.END_STONE_BRICK_WALL, Blocks.DIORITE_WALL, Blocks.SMOKER, Blocks.BLAST_FURNACE, Blocks.GRINDSTONE, Blocks.STONECUTTER, Blocks.BELL, Blocks.LANTERN, Blocks.SOUL_LANTERN, Blocks.WARPED_NYLIUM, Blocks.CRIMSON_NYLIUM, Blocks.STRUCTURE_BLOCK, Blocks.JIGSAW, Blocks.NETHERITE_BLOCK, Blocks.ANCIENT_DEBRIS, Blocks.CRYING_OBSIDIAN, Blocks.RESPAWN_ANCHOR, Blocks.LODESTONE, Blocks.BLACKSTONE, Blocks.BLACKSTONE_STAIRS, Blocks.BLACKSTONE_WALL, Blocks.BLACKSTONE_SLAB, Blocks.POLISHED_BLACKSTONE, Blocks.POLISHED_BLACKSTONE_BRICKS, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS, Blocks.CHISELED_POLISHED_BLACKSTONE, Blocks.POLISHED_BLACKSTONE_BRICK_SLAB, Blocks.POLISHED_BLACKSTONE_BRICK_STAIRS, Blocks.POLISHED_BLACKSTONE_BRICK_WALL, Blocks.GILDED_BLACKSTONE, Blocks.POLISHED_BLACKSTONE_STAIRS, Blocks.POLISHED_BLACKSTONE_SLAB, Blocks.POLISHED_BLACKSTONE_PRESSURE_PLATE, Blocks.POLISHED_BLACKSTONE_WALL, Blocks.CHISELED_NETHER_BRICKS, Blocks.CRACKED_NETHER_BRICKS, Blocks.QUARTZ_BRICKS, Blocks.TUFF, Blocks.CALCITE, Blocks.OXIDIZED_COPPER, Blocks.WEATHERED_COPPER, Blocks.EXPOSED_COPPER, Blocks.COPPER_BLOCK, Blocks.COPPER_ORE, Blocks.DEEPSLATE_COPPER_ORE, Blocks.OXIDIZED_CUT_COPPER, Blocks.WEATHERED_CUT_COPPER, Blocks.EXPOSED_CUT_COPPER, Blocks.CUT_COPPER, Blocks.OXIDIZED_CUT_COPPER_STAIRS, Blocks.WEATHERED_CUT_COPPER_STAIRS, Blocks.EXPOSED_CUT_COPPER_STAIRS, Blocks.CUT_COPPER_STAIRS, Blocks.OXIDIZED_CUT_COPPER_SLAB, Blocks.WEATHERED_CUT_COPPER_SLAB, Blocks.EXPOSED_CUT_COPPER_SLAB, Blocks.CUT_COPPER_SLAB, Blocks.WAXED_COPPER_BLOCK, Blocks.WAXED_WEATHERED_COPPER, Blocks.WAXED_EXPOSED_COPPER, Blocks.WAXED_OXIDIZED_COPPER, Blocks.WAXED_OXIDIZED_CUT_COPPER, Blocks.WAXED_WEATHERED_CUT_COPPER, Blocks.WAXED_EXPOSED_CUT_COPPER, Blocks.WAXED_CUT_COPPER, Blocks.WAXED_OXIDIZED_CUT_COPPER_STAIRS, Blocks.WAXED_WEATHERED_CUT_COPPER_STAIRS, Blocks.WAXED_EXPOSED_CUT_COPPER_STAIRS, Blocks.WAXED_CUT_COPPER_STAIRS, Blocks.WAXED_OXIDIZED_CUT_COPPER_SLAB, Blocks.WAXED_WEATHERED_CUT_COPPER_SLAB, Blocks.WAXED_EXPOSED_CUT_COPPER_SLAB, Blocks.WAXED_CUT_COPPER_SLAB, Blocks.LIGHTNING_ROD, Blocks.POINTED_DRIPSTONE, Blocks.DRIPSTONE_BLOCK, Blocks.DEEPSLATE, Blocks.COBBLED_DEEPSLATE, Blocks.COBBLED_DEEPSLATE_STAIRS, Blocks.COBBLED_DEEPSLATE_SLAB, Blocks.COBBLED_DEEPSLATE_WALL, Blocks.POLISHED_DEEPSLATE, Blocks.POLISHED_DEEPSLATE_STAIRS, Blocks.POLISHED_DEEPSLATE_SLAB, Blocks.POLISHED_DEEPSLATE_WALL, Blocks.DEEPSLATE_TILES, Blocks.DEEPSLATE_TILE_STAIRS, Blocks.DEEPSLATE_TILE_SLAB, Blocks.DEEPSLATE_TILE_WALL, Blocks.DEEPSLATE_BRICKS, Blocks.DEEPSLATE_BRICK_STAIRS, Blocks.DEEPSLATE_BRICK_SLAB, Blocks.DEEPSLATE_BRICK_WALL, Blocks.CHISELED_DEEPSLATE, Blocks.CRACKED_DEEPSLATE_BRICKS, Blocks.CRACKED_DEEPSLATE_TILES, Blocks.SMOOTH_BASALT, Blocks.RAW_IRON_BLOCK, Blocks.RAW_COPPER_BLOCK, Blocks.RAW_GOLD_BLOCK, Blocks.REINFORCED_DEEPSLATE); + private static final Set viaFabricPlus$EFFECTIVE_MATERIALS = ImmutableSet.of(Blocks.STONE, Blocks.GRANITE, Blocks.POLISHED_GRANITE, Blocks.DIORITE, Blocks.POLISHED_DIORITE, Blocks.ANDESITE, Blocks.POLISHED_ANDESITE, Blocks.COBBLESTONE, Blocks.BEDROCK, Blocks.GOLD_ORE, Blocks.DEEPSLATE_GOLD_ORE, Blocks.IRON_ORE, Blocks.DEEPSLATE_IRON_ORE, Blocks.COAL_ORE, Blocks.DEEPSLATE_COAL_ORE, Blocks.NETHER_GOLD_ORE, Blocks.LAPIS_ORE, Blocks.DEEPSLATE_LAPIS_ORE, Blocks.LAPIS_BLOCK, Blocks.DISPENSER, Blocks.SANDSTONE, Blocks.CHISELED_SANDSTONE, Blocks.CUT_SANDSTONE, Blocks.GOLD_BLOCK, Blocks.IRON_BLOCK, Blocks.BRICKS, Blocks.MOSSY_COBBLESTONE, Blocks.OBSIDIAN, Blocks.SPAWNER, Blocks.DIAMOND_ORE, Blocks.DEEPSLATE_DIAMOND_ORE, Blocks.DIAMOND_BLOCK, Blocks.FURNACE, Blocks.COBBLESTONE_STAIRS, Blocks.STONE_PRESSURE_PLATE, Blocks.IRON_DOOR, Blocks.REDSTONE_ORE, Blocks.DEEPSLATE_REDSTONE_ORE, Blocks.NETHERRACK, Blocks.BASALT, Blocks.POLISHED_BASALT, Blocks.STONE_BRICKS, Blocks.MOSSY_STONE_BRICKS, Blocks.CRACKED_STONE_BRICKS, Blocks.CHISELED_STONE_BRICKS, Blocks.MUD_BRICKS, Blocks.IRON_BARS, Blocks.CHAIN, Blocks.BRICK_STAIRS, Blocks.STONE_BRICK_STAIRS, Blocks.MUD_BRICK_STAIRS, Blocks.NETHER_BRICKS, Blocks.NETHER_BRICK_FENCE, Blocks.NETHER_BRICK_STAIRS, Blocks.ENCHANTING_TABLE, Blocks.BREWING_STAND, Blocks.CAULDRON, Blocks.WATER_CAULDRON, Blocks.LAVA_CAULDRON, Blocks.POWDER_SNOW_CAULDRON, Blocks.END_PORTAL_FRAME, Blocks.END_STONE, Blocks.SANDSTONE_STAIRS, Blocks.EMERALD_ORE, Blocks.DEEPSLATE_EMERALD_ORE, Blocks.ENDER_CHEST, Blocks.EMERALD_BLOCK, Blocks.COMMAND_BLOCK, Blocks.COBBLESTONE_WALL, Blocks.MOSSY_COBBLESTONE_WALL, Blocks.ANVIL, Blocks.CHIPPED_ANVIL, Blocks.DAMAGED_ANVIL, Blocks.LIGHT_WEIGHTED_PRESSURE_PLATE, Blocks.HEAVY_WEIGHTED_PRESSURE_PLATE, Blocks.REDSTONE_BLOCK, Blocks.NETHER_QUARTZ_ORE, Blocks.HOPPER, Blocks.QUARTZ_BLOCK, Blocks.CHISELED_QUARTZ_BLOCK, Blocks.QUARTZ_PILLAR, Blocks.QUARTZ_STAIRS, Blocks.DROPPER, Blocks.WHITE_TERRACOTTA, Blocks.ORANGE_TERRACOTTA, Blocks.MAGENTA_TERRACOTTA, Blocks.LIGHT_BLUE_TERRACOTTA, Blocks.YELLOW_TERRACOTTA, Blocks.LIME_TERRACOTTA, Blocks.PINK_TERRACOTTA, Blocks.GRAY_TERRACOTTA, Blocks.LIGHT_GRAY_TERRACOTTA, Blocks.CYAN_TERRACOTTA, Blocks.PURPLE_TERRACOTTA, Blocks.BLUE_TERRACOTTA, Blocks.BROWN_TERRACOTTA, Blocks.GREEN_TERRACOTTA, Blocks.RED_TERRACOTTA, Blocks.BLACK_TERRACOTTA, Blocks.IRON_TRAPDOOR, Blocks.PRISMARINE, Blocks.PRISMARINE_BRICKS, Blocks.DARK_PRISMARINE, Blocks.PRISMARINE_STAIRS, Blocks.PRISMARINE_BRICK_STAIRS, Blocks.DARK_PRISMARINE_STAIRS, Blocks.PRISMARINE_SLAB, Blocks.PRISMARINE_BRICK_SLAB, Blocks.DARK_PRISMARINE_SLAB, Blocks.TERRACOTTA, Blocks.COAL_BLOCK, Blocks.RED_SANDSTONE, Blocks.CHISELED_RED_SANDSTONE, Blocks.CUT_RED_SANDSTONE, Blocks.RED_SANDSTONE_STAIRS, Blocks.STONE_SLAB, Blocks.SMOOTH_STONE_SLAB, Blocks.SANDSTONE_SLAB, Blocks.CUT_SANDSTONE_SLAB, Blocks.PETRIFIED_OAK_SLAB, Blocks.COBBLESTONE_SLAB, Blocks.BRICK_SLAB, Blocks.STONE_BRICK_SLAB, Blocks.MUD_BRICK_SLAB, Blocks.NETHER_BRICK_SLAB, Blocks.QUARTZ_SLAB, Blocks.RED_SANDSTONE_SLAB, Blocks.CUT_RED_SANDSTONE_SLAB, Blocks.PURPUR_SLAB, Blocks.SMOOTH_STONE, Blocks.SMOOTH_SANDSTONE, Blocks.SMOOTH_QUARTZ, Blocks.SMOOTH_RED_SANDSTONE, Blocks.PURPUR_BLOCK, Blocks.PURPUR_PILLAR, Blocks.PURPUR_STAIRS, Blocks.END_STONE_BRICKS, Blocks.REPEATING_COMMAND_BLOCK, Blocks.CHAIN_COMMAND_BLOCK, Blocks.MAGMA_BLOCK, Blocks.RED_NETHER_BRICKS, Blocks.BONE_BLOCK, Blocks.OBSERVER, Blocks.WHITE_GLAZED_TERRACOTTA, Blocks.ORANGE_GLAZED_TERRACOTTA, Blocks.MAGENTA_GLAZED_TERRACOTTA, Blocks.LIGHT_BLUE_GLAZED_TERRACOTTA, Blocks.YELLOW_GLAZED_TERRACOTTA, Blocks.LIME_GLAZED_TERRACOTTA, Blocks.PINK_GLAZED_TERRACOTTA, Blocks.GRAY_GLAZED_TERRACOTTA, Blocks.LIGHT_GRAY_GLAZED_TERRACOTTA, Blocks.CYAN_GLAZED_TERRACOTTA, Blocks.PURPLE_GLAZED_TERRACOTTA, Blocks.BLUE_GLAZED_TERRACOTTA, Blocks.BROWN_GLAZED_TERRACOTTA, Blocks.GREEN_GLAZED_TERRACOTTA, Blocks.RED_GLAZED_TERRACOTTA, Blocks.BLACK_GLAZED_TERRACOTTA, Blocks.WHITE_CONCRETE, Blocks.ORANGE_CONCRETE, Blocks.MAGENTA_CONCRETE, Blocks.LIGHT_BLUE_CONCRETE, Blocks.YELLOW_CONCRETE, Blocks.LIME_CONCRETE, Blocks.PINK_CONCRETE, Blocks.GRAY_CONCRETE, Blocks.LIGHT_GRAY_CONCRETE, Blocks.CYAN_CONCRETE, Blocks.PURPLE_CONCRETE, Blocks.BLUE_CONCRETE, Blocks.BROWN_CONCRETE, Blocks.GREEN_CONCRETE, Blocks.RED_CONCRETE, Blocks.BLACK_CONCRETE, Blocks.DEAD_TUBE_CORAL_BLOCK, Blocks.DEAD_BRAIN_CORAL_BLOCK, Blocks.DEAD_BUBBLE_CORAL_BLOCK, Blocks.DEAD_FIRE_CORAL_BLOCK, Blocks.DEAD_HORN_CORAL_BLOCK, Blocks.TUBE_CORAL_BLOCK, Blocks.BRAIN_CORAL_BLOCK, Blocks.BUBBLE_CORAL_BLOCK, Blocks.FIRE_CORAL_BLOCK, Blocks.HORN_CORAL_BLOCK, Blocks.DEAD_TUBE_CORAL, Blocks.DEAD_BRAIN_CORAL, Blocks.DEAD_BUBBLE_CORAL, Blocks.DEAD_FIRE_CORAL, Blocks.DEAD_HORN_CORAL, Blocks.DEAD_TUBE_CORAL_FAN, Blocks.DEAD_BRAIN_CORAL_FAN, Blocks.DEAD_BUBBLE_CORAL_FAN, Blocks.DEAD_FIRE_CORAL_FAN, Blocks.DEAD_HORN_CORAL_FAN, Blocks.DEAD_TUBE_CORAL_WALL_FAN, Blocks.DEAD_BRAIN_CORAL_WALL_FAN, Blocks.DEAD_BUBBLE_CORAL_WALL_FAN, Blocks.DEAD_FIRE_CORAL_WALL_FAN, Blocks.DEAD_HORN_CORAL_WALL_FAN, Blocks.POLISHED_GRANITE_STAIRS, Blocks.SMOOTH_RED_SANDSTONE_STAIRS, Blocks.MOSSY_STONE_BRICK_STAIRS, Blocks.POLISHED_DIORITE_STAIRS, Blocks.MOSSY_COBBLESTONE_STAIRS, Blocks.END_STONE_BRICK_STAIRS, Blocks.STONE_STAIRS, Blocks.SMOOTH_SANDSTONE_STAIRS, Blocks.SMOOTH_QUARTZ_STAIRS, Blocks.GRANITE_STAIRS, Blocks.ANDESITE_STAIRS, Blocks.RED_NETHER_BRICK_STAIRS, Blocks.POLISHED_ANDESITE_STAIRS, Blocks.DIORITE_STAIRS, Blocks.POLISHED_GRANITE_SLAB, Blocks.SMOOTH_RED_SANDSTONE_SLAB, Blocks.MOSSY_STONE_BRICK_SLAB, Blocks.POLISHED_DIORITE_SLAB, Blocks.MOSSY_COBBLESTONE_SLAB, Blocks.END_STONE_BRICK_SLAB, Blocks.SMOOTH_SANDSTONE_SLAB, Blocks.SMOOTH_QUARTZ_SLAB, Blocks.GRANITE_SLAB, Blocks.ANDESITE_SLAB, Blocks.RED_NETHER_BRICK_SLAB, Blocks.POLISHED_ANDESITE_SLAB, Blocks.DIORITE_SLAB, Blocks.BRICK_WALL, Blocks.PRISMARINE_WALL, Blocks.RED_SANDSTONE_WALL, Blocks.MOSSY_STONE_BRICK_WALL, Blocks.GRANITE_WALL, Blocks.STONE_BRICK_WALL, Blocks.MUD_BRICK_WALL, Blocks.NETHER_BRICK_WALL, Blocks.ANDESITE_WALL, Blocks.RED_NETHER_BRICK_WALL, Blocks.SANDSTONE_WALL, Blocks.END_STONE_BRICK_WALL, Blocks.DIORITE_WALL, Blocks.SMOKER, Blocks.BLAST_FURNACE, Blocks.GRINDSTONE, Blocks.STONECUTTER, Blocks.BELL, Blocks.LANTERN, Blocks.SOUL_LANTERN, Blocks.WARPED_NYLIUM, Blocks.CRIMSON_NYLIUM, Blocks.STRUCTURE_BLOCK, Blocks.JIGSAW, Blocks.NETHERITE_BLOCK, Blocks.ANCIENT_DEBRIS, Blocks.CRYING_OBSIDIAN, Blocks.RESPAWN_ANCHOR, Blocks.LODESTONE, Blocks.BLACKSTONE, Blocks.BLACKSTONE_STAIRS, Blocks.BLACKSTONE_WALL, Blocks.BLACKSTONE_SLAB, Blocks.POLISHED_BLACKSTONE, Blocks.POLISHED_BLACKSTONE_BRICKS, Blocks.CRACKED_POLISHED_BLACKSTONE_BRICKS, Blocks.CHISELED_POLISHED_BLACKSTONE, Blocks.POLISHED_BLACKSTONE_BRICK_SLAB, Blocks.POLISHED_BLACKSTONE_BRICK_STAIRS, Blocks.POLISHED_BLACKSTONE_BRICK_WALL, Blocks.GILDED_BLACKSTONE, Blocks.POLISHED_BLACKSTONE_STAIRS, Blocks.POLISHED_BLACKSTONE_SLAB, Blocks.POLISHED_BLACKSTONE_PRESSURE_PLATE, Blocks.POLISHED_BLACKSTONE_WALL, Blocks.CHISELED_NETHER_BRICKS, Blocks.CRACKED_NETHER_BRICKS, Blocks.QUARTZ_BRICKS, Blocks.TUFF, Blocks.CALCITE, Blocks.OXIDIZED_COPPER, Blocks.WEATHERED_COPPER, Blocks.EXPOSED_COPPER, Blocks.COPPER_BLOCK, Blocks.COPPER_ORE, Blocks.DEEPSLATE_COPPER_ORE, Blocks.OXIDIZED_CUT_COPPER, Blocks.WEATHERED_CUT_COPPER, Blocks.EXPOSED_CUT_COPPER, Blocks.CUT_COPPER, Blocks.OXIDIZED_CUT_COPPER_STAIRS, Blocks.WEATHERED_CUT_COPPER_STAIRS, Blocks.EXPOSED_CUT_COPPER_STAIRS, Blocks.CUT_COPPER_STAIRS, Blocks.OXIDIZED_CUT_COPPER_SLAB, Blocks.WEATHERED_CUT_COPPER_SLAB, Blocks.EXPOSED_CUT_COPPER_SLAB, Blocks.CUT_COPPER_SLAB, Blocks.WAXED_COPPER_BLOCK, Blocks.WAXED_WEATHERED_COPPER, Blocks.WAXED_EXPOSED_COPPER, Blocks.WAXED_OXIDIZED_COPPER, Blocks.WAXED_OXIDIZED_CUT_COPPER, Blocks.WAXED_WEATHERED_CUT_COPPER, Blocks.WAXED_EXPOSED_CUT_COPPER, Blocks.WAXED_CUT_COPPER, Blocks.WAXED_OXIDIZED_CUT_COPPER_STAIRS, Blocks.WAXED_WEATHERED_CUT_COPPER_STAIRS, Blocks.WAXED_EXPOSED_CUT_COPPER_STAIRS, Blocks.WAXED_CUT_COPPER_STAIRS, Blocks.WAXED_OXIDIZED_CUT_COPPER_SLAB, Blocks.WAXED_WEATHERED_CUT_COPPER_SLAB, Blocks.WAXED_EXPOSED_CUT_COPPER_SLAB, Blocks.WAXED_CUT_COPPER_SLAB, Blocks.LIGHTNING_ROD, Blocks.POINTED_DRIPSTONE, Blocks.DRIPSTONE_BLOCK, Blocks.DEEPSLATE, Blocks.COBBLED_DEEPSLATE, Blocks.COBBLED_DEEPSLATE_STAIRS, Blocks.COBBLED_DEEPSLATE_SLAB, Blocks.COBBLED_DEEPSLATE_WALL, Blocks.POLISHED_DEEPSLATE, Blocks.POLISHED_DEEPSLATE_STAIRS, Blocks.POLISHED_DEEPSLATE_SLAB, Blocks.POLISHED_DEEPSLATE_WALL, Blocks.DEEPSLATE_TILES, Blocks.DEEPSLATE_TILE_STAIRS, Blocks.DEEPSLATE_TILE_SLAB, Blocks.DEEPSLATE_TILE_WALL, Blocks.DEEPSLATE_BRICKS, Blocks.DEEPSLATE_BRICK_STAIRS, Blocks.DEEPSLATE_BRICK_SLAB, Blocks.DEEPSLATE_BRICK_WALL, Blocks.CHISELED_DEEPSLATE, Blocks.CRACKED_DEEPSLATE_BRICKS, Blocks.CRACKED_DEEPSLATE_TILES, Blocks.SMOOTH_BASALT, Blocks.RAW_IRON_BLOCK, Blocks.RAW_COPPER_BLOCK, Blocks.RAW_GOLD_BLOCK, Blocks.REINFORCED_DEEPSLATE); @Unique - private final static Set viaFabricPlus$EFFECTIVE_BLOCKS_1152 = ImmutableSet.of(Blocks.ACTIVATOR_RAIL, Blocks.COAL_ORE, Blocks.COBBLESTONE, Blocks.DETECTOR_RAIL, Blocks.DIAMOND_BLOCK, Blocks.DIAMOND_ORE, Blocks.POWERED_RAIL, Blocks.GOLD_BLOCK, Blocks.GOLD_ORE, Blocks.ICE, Blocks.IRON_BLOCK, Blocks.IRON_ORE, Blocks.LAPIS_BLOCK, Blocks.LAPIS_ORE, Blocks.MOSSY_COBBLESTONE, Blocks.NETHERRACK, Blocks.PACKED_ICE, Blocks.BLUE_ICE, Blocks.RAIL, Blocks.REDSTONE_ORE, Blocks.SANDSTONE, Blocks.CHISELED_SANDSTONE, Blocks.CUT_SANDSTONE, Blocks.CHISELED_RED_SANDSTONE, Blocks.CUT_RED_SANDSTONE, Blocks.RED_SANDSTONE, Blocks.STONE, Blocks.GRANITE, Blocks.POLISHED_GRANITE, Blocks.DIORITE, Blocks.POLISHED_DIORITE, Blocks.ANDESITE, Blocks.POLISHED_ANDESITE, Blocks.STONE_SLAB, Blocks.SMOOTH_STONE_SLAB, Blocks.SANDSTONE_SLAB, Blocks.PETRIFIED_OAK_SLAB, Blocks.COBBLESTONE_SLAB, Blocks.BRICK_SLAB, Blocks.STONE_BRICK_SLAB, Blocks.NETHER_BRICK_SLAB, Blocks.QUARTZ_SLAB, Blocks.RED_SANDSTONE_SLAB, Blocks.PURPUR_SLAB, Blocks.SMOOTH_QUARTZ, Blocks.SMOOTH_RED_SANDSTONE, Blocks.SMOOTH_SANDSTONE, Blocks.SMOOTH_STONE, Blocks.STONE_BUTTON, Blocks.STONE_PRESSURE_PLATE, Blocks.POLISHED_GRANITE_SLAB, Blocks.SMOOTH_RED_SANDSTONE_SLAB, Blocks.MOSSY_STONE_BRICK_SLAB, Blocks.POLISHED_DIORITE_SLAB, Blocks.MOSSY_COBBLESTONE_SLAB, Blocks.END_STONE_BRICK_SLAB, Blocks.SMOOTH_SANDSTONE_SLAB, Blocks.SMOOTH_QUARTZ_SLAB, Blocks.GRANITE_SLAB, Blocks.ANDESITE_SLAB, Blocks.RED_NETHER_BRICK_SLAB, Blocks.POLISHED_ANDESITE_SLAB, Blocks.DIORITE_SLAB, Blocks.SHULKER_BOX, Blocks.BLACK_SHULKER_BOX, Blocks.BLUE_SHULKER_BOX, Blocks.BROWN_SHULKER_BOX, Blocks.CYAN_SHULKER_BOX, Blocks.GRAY_SHULKER_BOX, Blocks.GREEN_SHULKER_BOX, Blocks.LIGHT_BLUE_SHULKER_BOX, Blocks.LIGHT_GRAY_SHULKER_BOX, Blocks.LIME_SHULKER_BOX, Blocks.MAGENTA_SHULKER_BOX, Blocks.ORANGE_SHULKER_BOX, Blocks.PINK_SHULKER_BOX, Blocks.PURPLE_SHULKER_BOX, Blocks.RED_SHULKER_BOX, Blocks.WHITE_SHULKER_BOX, Blocks.YELLOW_SHULKER_BOX); + private static final Set viaFabricPlus$EFFECTIVE_BLOCKS_1152 = ImmutableSet.of(Blocks.ACTIVATOR_RAIL, Blocks.COAL_ORE, Blocks.COBBLESTONE, Blocks.DETECTOR_RAIL, Blocks.DIAMOND_BLOCK, Blocks.DIAMOND_ORE, Blocks.POWERED_RAIL, Blocks.GOLD_BLOCK, Blocks.GOLD_ORE, Blocks.ICE, Blocks.IRON_BLOCK, Blocks.IRON_ORE, Blocks.LAPIS_BLOCK, Blocks.LAPIS_ORE, Blocks.MOSSY_COBBLESTONE, Blocks.NETHERRACK, Blocks.PACKED_ICE, Blocks.BLUE_ICE, Blocks.RAIL, Blocks.REDSTONE_ORE, Blocks.SANDSTONE, Blocks.CHISELED_SANDSTONE, Blocks.CUT_SANDSTONE, Blocks.CHISELED_RED_SANDSTONE, Blocks.CUT_RED_SANDSTONE, Blocks.RED_SANDSTONE, Blocks.STONE, Blocks.GRANITE, Blocks.POLISHED_GRANITE, Blocks.DIORITE, Blocks.POLISHED_DIORITE, Blocks.ANDESITE, Blocks.POLISHED_ANDESITE, Blocks.STONE_SLAB, Blocks.SMOOTH_STONE_SLAB, Blocks.SANDSTONE_SLAB, Blocks.PETRIFIED_OAK_SLAB, Blocks.COBBLESTONE_SLAB, Blocks.BRICK_SLAB, Blocks.STONE_BRICK_SLAB, Blocks.NETHER_BRICK_SLAB, Blocks.QUARTZ_SLAB, Blocks.RED_SANDSTONE_SLAB, Blocks.PURPUR_SLAB, Blocks.SMOOTH_QUARTZ, Blocks.SMOOTH_RED_SANDSTONE, Blocks.SMOOTH_SANDSTONE, Blocks.SMOOTH_STONE, Blocks.STONE_BUTTON, Blocks.STONE_PRESSURE_PLATE, Blocks.POLISHED_GRANITE_SLAB, Blocks.SMOOTH_RED_SANDSTONE_SLAB, Blocks.MOSSY_STONE_BRICK_SLAB, Blocks.POLISHED_DIORITE_SLAB, Blocks.MOSSY_COBBLESTONE_SLAB, Blocks.END_STONE_BRICK_SLAB, Blocks.SMOOTH_SANDSTONE_SLAB, Blocks.SMOOTH_QUARTZ_SLAB, Blocks.GRANITE_SLAB, Blocks.ANDESITE_SLAB, Blocks.RED_NETHER_BRICK_SLAB, Blocks.POLISHED_ANDESITE_SLAB, Blocks.DIORITE_SLAB, Blocks.SHULKER_BOX, Blocks.BLACK_SHULKER_BOX, Blocks.BLUE_SHULKER_BOX, Blocks.BROWN_SHULKER_BOX, Blocks.CYAN_SHULKER_BOX, Blocks.GRAY_SHULKER_BOX, Blocks.GREEN_SHULKER_BOX, Blocks.LIGHT_BLUE_SHULKER_BOX, Blocks.LIGHT_GRAY_SHULKER_BOX, Blocks.LIME_SHULKER_BOX, Blocks.MAGENTA_SHULKER_BOX, Blocks.ORANGE_SHULKER_BOX, Blocks.PINK_SHULKER_BOX, Blocks.PURPLE_SHULKER_BOX, Blocks.RED_SHULKER_BOX, Blocks.WHITE_SHULKER_BOX, Blocks.YELLOW_SHULKER_BOX); protected MixinPickaxeItem(float attackDamage, float attackSpeed, ToolMaterial material, TagKey effectiveBlocks, Settings settings) { super(attackDamage, attackSpeed, material, effectiveBlocks, settings); @@ -78,4 +78,5 @@ public abstract class MixinPickaxeItem extends MiningToolItem { } return super.getMiningSpeedMultiplier(stack, state); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinShovelItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinShovelItem.java index 8b4199e4..3f1f5420 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinShovelItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinShovelItem.java @@ -31,7 +31,7 @@ import org.spongepowered.asm.mixin.injection.Slice; import java.util.Map; @Mixin(ShovelItem.class) -public class MixinShovelItem { +public abstract class MixinShovelItem { @Redirect(method = "useOnBlock", at = @At(value = "INVOKE", target = "Ljava/util/Map;get(Ljava/lang/Object;)Ljava/lang/Object;", ordinal = 0), @@ -43,4 +43,5 @@ public class MixinShovelItem { return map.get(grassBlock); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinSwordItem.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinSwordItem.java index fdfa7270..fa5b943d 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinSwordItem.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/item/MixinSwordItem.java @@ -34,7 +34,7 @@ import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; @Mixin(SwordItem.class) -public class MixinSwordItem extends ToolItem { +public abstract class MixinSwordItem extends ToolItem { public MixinSwordItem(ToolMaterial material, Settings settings) { super(material, settings); @@ -65,4 +65,5 @@ public class MixinSwordItem extends ToolItem { } return super.getMaxUseTime(stack); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/network/MixinClientCommonNetworkHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/network/MixinClientCommonNetworkHandler.java index 9d2d0033..34eaa667 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/network/MixinClientCommonNetworkHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/network/MixinClientCommonNetworkHandler.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.network; -import de.florianmichael.viafabricplus.definition.ClientsideFixes; +import de.florianmichael.viafabricplus.fixes.ClientsideFixes; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import net.fabricmc.fabric.impl.networking.payload.PacketByteBufPayload; import net.minecraft.client.MinecraftClient; @@ -69,7 +69,7 @@ public abstract class MixinClientCommonNetworkHandler { } @Redirect(method = "onKeepAlive", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientCommonNetworkHandler;send(Lnet/minecraft/network/packet/Packet;Ljava/util/function/BooleanSupplier;Ljava/time/Duration;)V")) - public void forceSendKeepAlive(ClientCommonNetworkHandler instance, Packet packet, BooleanSupplier sendCondition, Duration expiry) { + private void forceSendKeepAlive(ClientCommonNetworkHandler instance, Packet packet, BooleanSupplier sendCondition, Duration expiry) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_3)) { sendPacket(packet); return; @@ -79,10 +79,11 @@ public abstract class MixinClientCommonNetworkHandler { } @Inject(method = "onCustomPayload(Lnet/minecraft/network/packet/s2c/common/CustomPayloadS2CPacket;)V", at = @At("HEAD"), cancellable = true) - public void handleSyncTask(CustomPayloadS2CPacket packet, CallbackInfo ci) { + private void handleSyncTask(CustomPayloadS2CPacket packet, CallbackInfo ci) { if (packet.payload().id().toString().equals(ClientsideFixes.PACKET_SYNC_IDENTIFIER) && packet.payload() instanceof PacketByteBufPayload payload) { ClientsideFixes.handleSyncTask(payload.data()); ci.cancel(); // Cancel the packet, so it doesn't get processed by the client } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/network/MixinClientPlayNetworkHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/network/MixinClientPlayNetworkHandler.java index 4948afe2..7a7e5c7f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/network/MixinClientPlayNetworkHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/network/MixinClientPlayNetworkHandler.java @@ -20,7 +20,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.network; import com.llamalad7.mixinextras.injector.WrapWithCondition; -import de.florianmichael.viafabricplus.definition.RecipesPre1_12; +import de.florianmichael.viafabricplus.fixes.RecipesPre1_12; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import de.florianmichael.viafabricplus.settings.impl.VisualSettings; import net.minecraft.client.MinecraftClient; @@ -72,14 +72,14 @@ public abstract class MixinClientPlayNetworkHandler { @Shadow public abstract ClientConnection getConnection(); @Inject(method = "", at = @At("RETURN")) - public void fixPlayerListOrdering(MinecraftClient client, ClientConnection clientConnection, ClientConnectionState clientConnectionState, CallbackInfo ci) { + private void fixPlayerListOrdering(MinecraftClient client, ClientConnection clientConnection, ClientConnectionState clientConnectionState, CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_1tor1_19_2)) { this.listedPlayerListEntries = new LinkedHashSet<>(); } } @Inject(method = "onChunkLoadDistance", at = @At("RETURN")) - public void emulateSimulationDistance(ChunkLoadDistanceS2CPacket packet, CallbackInfo ci) { + private void emulateSimulationDistance(ChunkLoadDistanceS2CPacket packet, CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_17_1)) { this.onSimulationDistance(new SimulationDistanceS2CPacket(packet.getDistance())); } @@ -95,19 +95,19 @@ public abstract class MixinClientPlayNetworkHandler { } @WrapWithCondition(method = "onPlayerSpawnPosition", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/DownloadingTerrainScreen;setReady()V")) - public boolean moveDownloadingTerrainClosing(DownloadingTerrainScreen instance) { + private boolean moveDownloadingTerrainClosing(DownloadingTerrainScreen instance) { return ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(VersionEnum.r1_19); } @Inject(method = "onPlayerPositionLook", at = @At("RETURN")) - public void closeDownloadingTerrain(PlayerPositionLookS2CPacket packet, CallbackInfo ci) { + private void closeDownloadingTerrain(PlayerPositionLookS2CPacket packet, CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_18_2) && MinecraftClient.getInstance().currentScreen instanceof DownloadingTerrainScreen) { MinecraftClient.getInstance().setScreen(null); } } @ModifyConstant(method = "onEntityPassengersSet", constant = @Constant(classValue = BoatEntity.class)) - public Class dontChangePlayerYaw(Object entity, Class constant) { + private Class dontChangePlayerYaw(Object entity, Class constant) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_18_2)) { return Integer.class; } @@ -115,22 +115,22 @@ public abstract class MixinClientPlayNetworkHandler { } @WrapWithCondition(method = "onPlayerList", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V", remap = false)) - public boolean removeWarning(Logger instance, String s, Object o) { + private boolean removeWarning(Logger instance, String s, Object o) { return ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(VersionEnum.r1_19_3); } @WrapWithCondition(method = "onChatMessage", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;)V", remap = false)) - public boolean removeError(Logger instance, String s, Object o) { + private boolean removeError(Logger instance, String s, Object o) { return ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(VersionEnum.r1_20_2); } @Redirect(method = "onServerMetadata", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/ServerMetadataS2CPacket;isSecureChatEnforced()Z")) - public boolean removeSecureChatWarning(ServerMetadataS2CPacket instance) { + private boolean removeSecureChatWarning(ServerMetadataS2CPacket instance) { return instance.isSecureChatEnforced() || VisualSettings.INSTANCE.disableSecureChatWarning.isEnabled(); } @Redirect(method = "onSynchronizeRecipes", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/SynchronizeRecipesS2CPacket;getRecipes()Ljava/util/List;")) - public List> rewriteRecipes(SynchronizeRecipesS2CPacket instance) { + private List> rewriteRecipes(SynchronizeRecipesS2CPacket instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_11_1to1_11_2)) { final List> recipes = instance.getRecipes().stream().map(RecipeEntry::value).collect(Collectors.toList()); RecipesPre1_12.editRecipes(recipes, ProtocolHack.getTargetVersion()); @@ -147,7 +147,8 @@ public abstract class MixinClientPlayNetworkHandler { } @WrapWithCondition(method = "setPublicSession", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;)V", remap = false)) - public boolean removeInvalidSignatureWarning(Logger instance, String s, Object o) { + private boolean removeInvalidSignatureWarning(Logger instance, String s, Object o) { return ProtocolHack.getTargetVersion().isNewerThanOrEqualTo(VersionEnum.r1_19_4); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinChatMessageC2SPacket.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinChatMessageC2SPacket.java index da8056a3..da216d60 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinChatMessageC2SPacket.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinChatMessageC2SPacket.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.packet; -import de.florianmichael.viafabricplus.definition.ClientsideFixes; +import de.florianmichael.viafabricplus.fixes.ClientsideFixes; import net.minecraft.client.MinecraftClient; import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket; import org.spongepowered.asm.mixin.Mixin; @@ -27,14 +27,15 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.ModifyArg; @Mixin(ChatMessageC2SPacket.class) -public class MixinChatMessageC2SPacket { +public abstract class MixinChatMessageC2SPacket { @ModifyArg(method = "write", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketByteBuf;writeString(Ljava/lang/String;I)Lnet/minecraft/network/PacketByteBuf;")) - public int modifyChatLength(int maxLength) { + private int modifyChatLength(int maxLength) { if (MinecraftClient.getInstance().isInSingleplayer()) { return 256; } return ClientsideFixes.getCurrentChatLimit(); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinPacketByteBuf.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinPacketByteBuf.java index f7cc86b6..7e3795a6 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinPacketByteBuf.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinPacketByteBuf.java @@ -30,12 +30,13 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = PacketByteBuf.class) -public class MixinPacketByteBuf { +public abstract class MixinPacketByteBuf { @Inject(method = "readText", at = @At(value = "INVOKE", target = "Lio/netty/handler/codec/DecoderException;(Ljava/lang/String;)V", shift = At.Shift.BEFORE, remap = false), cancellable = true) - public void injectReadText(CallbackInfoReturnable cir) { + private void injectReadText(CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_18tor1_18_1)) { cir.setReturnValue(null); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinUpdatePlayerAbilitiesC2SPacket.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinUpdatePlayerAbilitiesC2SPacket.java index faf6bd8b..8ea0cf9f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinUpdatePlayerAbilitiesC2SPacket.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/packet/MixinUpdatePlayerAbilitiesC2SPacket.java @@ -30,10 +30,10 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(UpdatePlayerAbilitiesC2SPacket.class) -public class MixinUpdatePlayerAbilitiesC2SPacket { +public abstract class MixinUpdatePlayerAbilitiesC2SPacket { @Redirect(method = "write", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketByteBuf;writeByte(I)Lnet/minecraft/network/PacketByteBuf;")) - public PacketByteBuf implementFlags(PacketByteBuf instance, int value) { + private PacketByteBuf implementFlags(PacketByteBuf instance, int value) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_15_2)) { final PlayerAbilities playerAbilities = MinecraftClient.getInstance().player.getAbilities(); @@ -44,4 +44,5 @@ public class MixinUpdatePlayerAbilitiesC2SPacket { return instance.writeByte(value); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinAnvilScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinAnvilScreen.java index a6ef8f2e..ffc591b5 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinAnvilScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinAnvilScreen.java @@ -42,7 +42,7 @@ public abstract class MixinAnvilScreen extends ForgingScreen } @Inject(method = "onRenamed", at = @At("HEAD"), cancellable = true) - public void changePacketLogic(String name, CallbackInfo ci) { + private void changePacketLogic(String name, CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19_4) && !name.isEmpty()) { String string = name; Slot slot = this.handler.getSlot(0); @@ -55,4 +55,5 @@ public abstract class MixinAnvilScreen extends ForgingScreen ci.cancel(); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java index ddadfd9c..e2764157 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinChatScreen.java @@ -20,7 +20,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.screen; import de.florianmichael.viafabricplus.settings.impl.VisualSettings; -import de.florianmichael.viafabricplus.definition.ClientsideFixes; +import de.florianmichael.viafabricplus.fixes.ClientsideFixes; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.hud.ChatHud; import net.minecraft.client.gui.hud.MessageIndicator; @@ -34,23 +34,24 @@ import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ChatScreen.class) -public class MixinChatScreen { +public abstract class MixinChatScreen { @Shadow protected TextFieldWidget chatField; @Inject(method = "init", at = @At("RETURN")) - public void changeChatLength(CallbackInfo ci) { + private void changeChatLength(CallbackInfo ci) { if (!MinecraftClient.getInstance().isInSingleplayer()) { this.chatField.setMaxLength(ClientsideFixes.getCurrentChatLimit()); } } @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;getIndicatorAt(DD)Lnet/minecraft/client/gui/hud/MessageIndicator;")) - public MessageIndicator removeIndicator(ChatHud instance, double mouseX, double mouseY) { + private MessageIndicator removeIndicator(ChatHud instance, double mouseX, double mouseY) { if (VisualSettings.INSTANCE.hideSignatureIndicator.isEnabled()) { return null; } return instance.getIndicatorAt(mouseX, mouseY); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCommandBlockScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCommandBlockScreen.java index d63c4600..243de867 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCommandBlockScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCommandBlockScreen.java @@ -44,7 +44,7 @@ public abstract class MixinCommandBlockScreen { public abstract void updateCommandBlock(); @Inject(method = "init", at = @At("TAIL")) - private void injectInit(CallbackInfo ci) { + private void removeWidgets(CallbackInfo ci) { if (VisualSettings.INSTANCE.removeNewerFeaturesFromCommandBlockScreen.isEnabled()) { modeButton.visible = false; conditionalModeButton.visible = false; @@ -53,4 +53,5 @@ public abstract class MixinCommandBlockScreen { updateCommandBlock(); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinConnectScreen_1.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinConnectScreen_1.java index 1583e33c..9c09e07e 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinConnectScreen_1.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinConnectScreen_1.java @@ -24,10 +24,10 @@ import com.viaversion.viaversion.api.minecraft.ProfileKey; import com.viaversion.viaversion.api.minecraft.signature.storage.ChatSession1_19_0; import com.viaversion.viaversion.api.minecraft.signature.storage.ChatSession1_19_1; import de.florianmichael.viafabricplus.ViaFabricPlus; -import de.florianmichael.viafabricplus.definition.account.BedrockAccountHandler; -import de.florianmichael.viafabricplus.definition.account.ClassiCubeAccountHandler; +import de.florianmichael.viafabricplus.fixes.account.BedrockAccountHandler; +import de.florianmichael.viafabricplus.fixes.account.ClassiCubeAccountHandler; import de.florianmichael.viafabricplus.injection.access.IClientConnection; -import de.florianmichael.viafabricplus.injection.access.IPublicKeyData; +import de.florianmichael.viafabricplus.injection.access.ILegacyKeySignatureStorage; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import de.florianmichael.viafabricplus.protocolhack.provider.vialegacy.ViaFabricPlusClassicMPPassProvider; import de.florianmichael.viafabricplus.settings.impl.AuthenticationSettings; @@ -55,7 +55,7 @@ import java.net.InetSocketAddress; import java.util.UUID; @Mixin(targets = "net.minecraft.client.gui.screen.ConnectScreen$1") -public class MixinConnectScreen_1 { +public abstract class MixinConnectScreen_1 { @Final @Shadow @@ -66,32 +66,35 @@ public class MixinConnectScreen_1 { ConnectScreen field_2416; @Redirect(method = "run", at = @At(value = "INVOKE", target = "Ljava/net/InetSocketAddress;getHostName()Ljava/lang/String;", ordinal = 0)) - public String replaceAddress(InetSocketAddress instance) { + private String replaceAddress(InetSocketAddress instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_17) || ProtocolHack.getTargetVersion() == VersionEnum.bedrockLatest) { return field_33737.getAddress(); } + return instance.getHostName(); } @Redirect(method = "run", at = @At(value = "INVOKE", target = "Ljava/net/InetSocketAddress;getPort()I")) - public int replacePort(InetSocketAddress instance) { + private int replacePort(InetSocketAddress instance) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_17) || ProtocolHack.getTargetVersion() == VersionEnum.bedrockLatest) { return field_33737.getPort(); } + return instance.getPort(); } @Redirect(method = "run", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;)V")) - public void spoofUserName(ClientConnection instance, Packet packet) { + private void spoofUserName(ClientConnection instance, Packet packet) { if (AuthenticationSettings.INSTANCE.spoofUserNameIfUsingClassiCube.getValue() && ViaFabricPlusClassicMPPassProvider.classiCubeMPPass != null && ClassiCubeAccountHandler.INSTANCE.getAccount() != null) { instance.send(new LoginHelloC2SPacket(ClassiCubeAccountHandler.INSTANCE.getAccount().username(), MinecraftClient.getInstance().getSession().getUuidOrNull())); return; } + instance.send(packet); } @Inject(method = "run", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/ClientConnection;send(Lnet/minecraft/network/packet/Packet;)V", shift = At.Shift.BEFORE)) - public void setupConnectionSessions(CallbackInfo ci) { + private void setupConnectionSessions(CallbackInfo ci) { final ClientConnection connection = field_2416.connection; if (connection == null || connection.channel == null) return; @@ -131,9 +134,9 @@ public class MixinConnectScreen_1 { userConnection.put(new ChatSession1_19_1(playerUuid, profile.privateKey(), new ProfileKey(publicKeyData.expiresAt().toEpochMilli(), publicKeyData.key().getEncoded(), publicKeyData.keySignature()))); if (targetVersion == VersionEnum.r1_19) { - final var legacyKey = ((IPublicKeyData) (Object) publicKeyData).viaFabricPlus$getV1Key(); + final var legacyKey = ((ILegacyKeySignatureStorage) (Object) publicKeyData).viafabricplus$getLegacyPublicKeySignature(); if (legacyKey != null) { - userConnection.put(new ChatSession1_19_0(playerUuid, profile.privateKey(), new ProfileKey(publicKeyData.expiresAt().toEpochMilli(), publicKeyData.key().getEncoded(), legacyKey.array()))); + userConnection.put(new ChatSession1_19_0(playerUuid, profile.privateKey(), new ProfileKey(publicKeyData.expiresAt().toEpochMilli(), publicKeyData.key().getEncoded(), legacyKey))); } else { ViaFabricPlus.LOGGER.error("Failed to fetch legacy key, can't setup ChatSession"); } @@ -143,4 +146,5 @@ public class MixinConnectScreen_1 { } } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java index 8d2dc39d..e68b934a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinCreativeInventoryScreen.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.screen; -import de.florianmichael.viafabricplus.definition.classic.screen.ClassicItemSelectionScreen; +import de.florianmichael.viafabricplus.fixes.classic.screen.ClassicItemSelectionScreen; import de.florianmichael.viafabricplus.settings.impl.VisualSettings; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ingame.CreativeInventoryScreen; @@ -29,14 +29,15 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(CreativeInventoryScreen.class) -public class MixinCreativeInventoryScreen { +public abstract class MixinCreativeInventoryScreen { @Inject(method = "init", at = @At("RETURN")) - public void replaceCreativeMenu(CallbackInfo ci) { + private void replaceCreativeMenu(CallbackInfo ci) { if (VisualSettings.INSTANCE.replaceCreativeInventory.isEnabled()) { if (ClassicItemSelectionScreen.INSTANCE == null) return; MinecraftClient.getInstance().setScreen(ClassicItemSelectionScreen.INSTANCE); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinDownloadingTerrainScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinDownloadingTerrainScreen.java index a5813827..166371b6 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinDownloadingTerrainScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinDownloadingTerrainScreen.java @@ -36,7 +36,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(DownloadingTerrainScreen.class) -public class MixinDownloadingTerrainScreen extends Screen { +public abstract class MixinDownloadingTerrainScreen extends Screen { @Shadow @Final private long loadStartTime; @Shadow private boolean closeOnNextTick; @@ -49,7 +49,7 @@ public class MixinDownloadingTerrainScreen extends Screen { } @Inject(method = "tick", at = @At("HEAD"), cancellable = true) - public void injectTick(CallbackInfo ci) { + private void injectTick(CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_12_1)) { viaFabricPlus$tickCounter++; @@ -76,4 +76,5 @@ public class MixinDownloadingTerrainScreen extends Screen { ci.cancel(); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinGameModeSelectionScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinGameModeSelectionScreen.java index 978c9f10..484736da 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinGameModeSelectionScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinGameModeSelectionScreen.java @@ -35,7 +35,7 @@ import java.util.Arrays; import java.util.List; @Mixin(GameModeSelectionScreen.class) -public class MixinGameModeSelectionScreen extends Screen { +public abstract class MixinGameModeSelectionScreen extends Screen { @Mutable @Shadow @Final private static int UI_WIDTH; @@ -48,7 +48,7 @@ public class MixinGameModeSelectionScreen extends Screen { } @Inject(method = "", at = @At("RETURN")) - public void fixUIWidth(CallbackInfo ci) { + private void fixUIWidth(CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThan(VersionEnum.r1_8)) { final List gameModeSelections = new ArrayList<>(Arrays.stream(GameModeSelectionScreen.GameModeSelection.values()).toList()); @@ -61,17 +61,19 @@ public class MixinGameModeSelectionScreen extends Screen { } @Inject(method = "init", at = @At("HEAD")) - public void disableInClassic(CallbackInfo ci) { + private void disableInClassic(CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.c0_28toc0_30)) { // survival mode was added in a1.0.15 this.close(); } } @Redirect(method = "init", at = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/screen/GameModeSelectionScreen$GameModeSelection;VALUES:[Lnet/minecraft/client/gui/screen/GameModeSelectionScreen$GameModeSelection;")) - public GameModeSelectionScreen.GameModeSelection[] removeNewerGameModes() { + private GameModeSelectionScreen.GameModeSelection[] removeNewerGameModes() { if (ProtocolHack.getTargetVersion().isOlderThan(VersionEnum.r1_8)) { return viaFabricPlus$unwrappedGameModes; } + return GameModeSelectionScreen.GameModeSelection.values(); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinGameModeSelectionScreen_GameModeSelection.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinGameModeSelectionScreen_GameModeSelection.java index 383fcdf7..632678cf 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinGameModeSelectionScreen_GameModeSelection.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinGameModeSelectionScreen_GameModeSelection.java @@ -34,7 +34,7 @@ import java.util.Optional; @SuppressWarnings("DataFlowIssue") @Mixin(GameModeSelectionScreen.GameModeSelection.class) -public class MixinGameModeSelectionScreen_GameModeSelection { +public abstract class MixinGameModeSelectionScreen_GameModeSelection { @Shadow @Final public static GameModeSelectionScreen.GameModeSelection SURVIVAL; @@ -54,7 +54,7 @@ public class MixinGameModeSelectionScreen_GameModeSelection { } @Inject(method = "next", at = @At("HEAD"), cancellable = true) - public void unwrapGameModes(CallbackInfoReturnable> cir) { + private void unwrapGameModes(CallbackInfoReturnable> cir) { if (ProtocolHack.getTargetVersion().isOlderThan(VersionEnum.r1_8)) { switch ((GameModeSelectionScreen.GameModeSelection)(Object)this) { case CREATIVE -> cir.setReturnValue(Optional.of(SURVIVAL)); @@ -69,4 +69,5 @@ public class MixinGameModeSelectionScreen_GameModeSelection { } } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinHandledScreens.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinHandledScreens.java index 12b0b3e3..e06f6d1f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinHandledScreens.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinHandledScreens.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.screen; -import de.florianmichael.viafabricplus.definition.TripleChestHandler1_13_2; +import de.florianmichael.viafabricplus.fixes.TripleChestHandler1_13_2; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import net.minecraft.client.gui.screen.ingame.GenericContainerScreen; import net.minecraft.client.gui.screen.ingame.HandledScreens; @@ -34,7 +34,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(HandledScreens.class) -public class MixinHandledScreens { +public abstract class MixinHandledScreens { @Inject(method = "getProvider", at = @At("HEAD"), cancellable = true) private static void returnFakeProvider(ScreenHandlerType type, CallbackInfoReturnable cir) { @@ -42,4 +42,5 @@ public class MixinHandledScreens { cir.setReturnValue((handler, playerInventory, title) -> new GenericContainerScreen((GenericContainerScreenHandler) handler, playerInventory, title)); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinJigsawBlockScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinJigsawBlockScreen.java index 91879461..4a27e761 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinJigsawBlockScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinJigsawBlockScreen.java @@ -35,7 +35,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(JigsawBlockScreen.class) -public class MixinJigsawBlockScreen extends Screen { +public abstract class MixinJigsawBlockScreen extends Screen { @Shadow private TextFieldWidget nameField; @@ -51,7 +51,7 @@ public class MixinJigsawBlockScreen extends Screen { } @Inject(method = "init", at = @At("RETURN")) - public void injectInit(CallbackInfo ci) { + private void injectInit(CallbackInfo ci) { if (VisualSettings.INSTANCE.removeNewerFeaturesFromJigsawScreen.isEnabled()) { nameField.active = false; jointRotationButton.active = false; @@ -63,9 +63,10 @@ public class MixinJigsawBlockScreen extends Screen { } @Inject(method = "render", at = @At("HEAD")) - public void injectRender(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { + private void injectRender(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { if (VisualSettings.INSTANCE.removeNewerFeaturesFromJigsawScreen.isEnabled()) { nameField.setText(targetField.getText()); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinOptionsScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinOptionsScreen.java similarity index 92% rename from src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinOptionsScreen.java rename to src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinOptionsScreen.java index a25c77c0..7bb5f744 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/base/MixinOptionsScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinOptionsScreen.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package de.florianmichael.viafabricplus.injection.mixin.base; +package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.screen; import de.florianmichael.viafabricplus.settings.impl.GeneralSettings; import net.minecraft.client.MinecraftClient; @@ -40,9 +40,10 @@ public abstract class MixinOptionsScreen extends Screen { } @Inject(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/GridWidget$Adder;add(Lnet/minecraft/client/gui/widget/Widget;)Lnet/minecraft/client/gui/widget/Widget;", ordinal = 10, shift = At.Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD) - public void addValuesButton(CallbackInfo ci, GridWidget gridWidget, GridWidget.Adder adder) { + private void addValuesButton(CallbackInfo ci, GridWidget gridWidget, GridWidget.Adder adder) { if (GeneralSettings.INSTANCE.showSuperSecretSettings.getValue() && MinecraftClient.getInstance().player != null) { this.addDrawableChild(ButtonWidget.builder(Text.literal("Super Secret Settings..."), button -> MinecraftClient.getInstance().gameRenderer.cycleSuperSecretSetting()).dimensions(this.width / 2 + 5, this.height / 6 + 18, 150, 20).build()); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinScreen.java index 11df1233..e47df05c 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinScreen.java @@ -33,15 +33,16 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Screen.class) -public class MixinScreen { +public abstract class MixinScreen { @Shadow @Nullable protected MinecraftClient client; @Inject(method = "handleTextClick", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;)V", shift = At.Shift.BEFORE, ordinal = 1), cancellable = true) - public void allowRunCommandAction(Style style, CallbackInfoReturnable cir) { + private void allowRunCommandAction(Style style, CallbackInfoReturnable cir) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_19)) { this.client.player.networkHandler.sendChatMessage(SharedConstants.stripInvalidChars(style.getClickEvent().getValue())); cir.setReturnValue(true); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinStructureBlockScreen_1.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinStructureBlockScreen_1.java index 8d9e177e..ef2a9bb6 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinStructureBlockScreen_1.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/MixinStructureBlockScreen_1.java @@ -31,7 +31,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(targets = "net.minecraft.client.gui.screen.ingame.StructureBlockScreen$1") -public class MixinStructureBlockScreen_1 extends TextFieldWidget { +public abstract class MixinStructureBlockScreen_1 extends TextFieldWidget { public MixinStructureBlockScreen_1(TextRenderer textRenderer, int x, int y, int width, int height, TextFieldWidget copyFrom, Text text) { super(textRenderer, x, y, width, height, copyFrom, text); @@ -43,4 +43,5 @@ public class MixinStructureBlockScreen_1 extends TextFieldWidget { ci.setReturnValue(super.charTyped(chr, keyCode)); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinChatHud.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinChatHud.java index 688f47d5..059e392a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinChatHud.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinChatHud.java @@ -29,13 +29,15 @@ import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @Mixin(ChatHud.class) -public class MixinChatHud { +public abstract class MixinChatHud { @WrapOperation(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHudLine$Visible;indicator()Lnet/minecraft/client/gui/hud/MessageIndicator;"), require = 0) - public MessageIndicator removeIndicators(ChatHudLine.Visible instance, Operation original) { + private MessageIndicator removeIndicators(ChatHudLine.Visible instance, Operation original) { if (VisualSettings.INSTANCE.hideSignatureIndicator.isEnabled()) { return null; } + return original.call(instance); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java index 10db0a27..1958f496 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/hud/MixinInGameHud.java @@ -41,22 +41,22 @@ public abstract class MixinInGameHud { // Removing newer elements @Inject(method = "renderExperienceBar", at = @At("HEAD"), cancellable = true) - public void removeExperienceBar(DrawContext context, int x, CallbackInfo ci) { + private void removeExperienceBar(DrawContext context, int x, CallbackInfo ci) { if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) ci.cancel(); } @Inject(method = "renderMountJumpBar", at = @At("HEAD"), cancellable = true) - public void removeMountJumpBar(JumpingMount mount, DrawContext context, int x, CallbackInfo ci) { + private void removeMountJumpBar(JumpingMount mount, DrawContext context, int x, CallbackInfo ci) { if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) ci.cancel(); } @Inject(method = "renderMountHealth", at = @At("HEAD"), cancellable = true) - public void removeMountHealth(DrawContext context, CallbackInfo ci) { + private void removeMountHealth(DrawContext context, CallbackInfo ci) { if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) ci.cancel(); } @Inject(method = "getHeartCount", at = @At("HEAD"), cancellable = true) - public void removeHungerBar(LivingEntity entity, CallbackInfoReturnable cir) { + private void removeHungerBar(LivingEntity entity, CallbackInfoReturnable cir) { if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) { cir.setReturnValue(1); } @@ -97,4 +97,5 @@ public abstract class MixinInGameHud { if (VisualSettings.INSTANCE.removeNewerHudElements.isEnabled()) return scaledWidth - old - 9; return old; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/merchant/MixinMerchantScreen.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/merchant/MixinMerchantScreen.java index c733f946..6e941686 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/merchant/MixinMerchantScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/merchant/MixinMerchantScreen.java @@ -47,12 +47,12 @@ public abstract class MixinMerchantScreen extends HandledScreen ci) { - if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) + if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8)) { ci.setReturnValue(false); + } } @Override public boolean isEnabled() { return ProtocolHack.getTargetVersion().isNewerThan(VersionEnum.r1_8); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinCraftingScreenHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinCraftingScreenHandler.java index c98b1ef6..69e272d4 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinCraftingScreenHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinCraftingScreenHandler.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.screen.screenhandler; -import de.florianmichael.viafabricplus.definition.RecipesPre1_12; +import de.florianmichael.viafabricplus.fixes.RecipesPre1_12; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.RecipeInputInventory; @@ -44,9 +44,10 @@ public abstract class MixinCraftingScreenHandler extends AbstractRecipeScreenHan } @Inject(method = "onContentChanged", at = @At("HEAD")) - public void updateResultSlot(Inventory inventory, CallbackInfo ci) { + private void updateResultSlot(Inventory inventory, CallbackInfo ci) { if (ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_11_1to1_11_2)) { RecipesPre1_12.setCraftingResultSlot(syncId, this, input); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinPlayerScreenHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinPlayerScreenHandler.java index d1e30ebb..97543acc 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinPlayerScreenHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinPlayerScreenHandler.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.screen.screenhandler; -import de.florianmichael.viafabricplus.definition.RecipesPre1_12; +import de.florianmichael.viafabricplus.fixes.RecipesPre1_12; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.RecipeInputInventory; import net.raphimc.vialoader.util.VersionEnum; diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinScreenHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinScreenHandler.java index f9153258..97e05303 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinScreenHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/minecraft/screen/screenhandler/MixinScreenHandler.java @@ -32,7 +32,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ScreenHandler.class) -public class MixinScreenHandler implements IScreenHandler { +public abstract class MixinScreenHandler implements IScreenHandler { @Unique private short viaFabricPlus$lastActionId = 0; @@ -48,4 +48,5 @@ public class MixinScreenHandler implements IScreenHandler { public short viaFabricPlus$getAndIncrementLastActionId() { return ++viaFabricPlus$lastActionId; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viabedrock/MixinBedrockProtocol.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viabedrock/MixinBedrockProtocol.java index e91553c0..6659b7bf 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viabedrock/MixinBedrockProtocol.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viabedrock/MixinBedrockProtocol.java @@ -20,7 +20,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.viabedrock; import com.viaversion.viaversion.api.connection.UserConnection; -import de.florianmichael.viafabricplus.definition.tracker.JoinGameTracker; +import de.florianmichael.viafabricplus.fixes.tracker.JoinGameTracker; import net.raphimc.viabedrock.protocol.BedrockProtocol; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -28,10 +28,11 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(value = BedrockProtocol.class, remap = false) -public class MixinBedrockProtocol { +public abstract class MixinBedrockProtocol { @Inject(method = "init", at = @At("RETURN")) - public void hookStorages(UserConnection user, CallbackInfo ci) { + private void hookStorages(UserConnection user, CallbackInfo ci) { user.put(new JoinGameTracker(user)); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viabedrock/MixinJoinPackets.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viabedrock/MixinJoinPackets.java index ca084870..6da7677b 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viabedrock/MixinJoinPackets.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viabedrock/MixinJoinPackets.java @@ -21,7 +21,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.viabedrock; import com.viaversion.viaversion.api.protocol.packet.PacketWrapper; import com.viaversion.viaversion.api.type.Type; -import de.florianmichael.viafabricplus.definition.tracker.JoinGameTracker; +import de.florianmichael.viafabricplus.fixes.tracker.JoinGameTracker; import net.raphimc.viabedrock.protocol.packets.JoinPackets; import net.raphimc.viabedrock.protocol.types.primitive.LongLEType; import net.raphimc.viabedrock.protocol.types.primitive.StringType; @@ -31,7 +31,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(value = JoinPackets.class, remap = false) -public class MixinJoinPackets { +public abstract class MixinJoinPackets { @Redirect(method = "lambda$register$2", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/api/protocol/packet/PacketWrapper;read(Lcom/viaversion/viaversion/api/type/Type;)Ljava/lang/Object;", ordinal = 5)) private static Object trackWorldSeed(PacketWrapper instance, Type tType) throws Exception { @@ -53,4 +53,5 @@ public class MixinJoinPackets { instance.user().get(JoinGameTracker.class).setEnchantmentSeed((Integer) enchantmentSeed); return enchantmentSeed; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinClassicProtocolExtension.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinClassicProtocolExtension.java index ab4bf092..1206bc67 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinClassicProtocolExtension.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinClassicProtocolExtension.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.vialegacy; -import de.florianmichael.viafabricplus.definition.classic.CustomClassicProtocolExtensions; +import de.florianmichael.viafabricplus.fixes.classic.CustomClassicProtocolExtensions; import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data.ClassicProtocolExtension; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -27,23 +27,27 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = ClassicProtocolExtension.class, remap = false) -public class MixinClassicProtocolExtension { +public abstract class MixinClassicProtocolExtension { @Inject(method = "supportsVersion", at = @At("HEAD"), cancellable = true) - public void allowExtensions_supportsVersion(int version, CallbackInfoReturnable cir) { - if (CustomClassicProtocolExtensions.INSTANCE.ALLOWED_EXTENSIONS.contains((ClassicProtocolExtension) (Object) this)) + private void allowExtensions_supportsVersion(int version, CallbackInfoReturnable cir) { + if (CustomClassicProtocolExtensions.INSTANCE.ALLOWED_EXTENSIONS.contains((ClassicProtocolExtension) (Object) this)) { cir.setReturnValue(true); + } } @Inject(method = "isSupported", at = @At("HEAD"), cancellable = true) - public void allowExtensions_isSupported(CallbackInfoReturnable cir) { - if (CustomClassicProtocolExtensions.INSTANCE.ALLOWED_EXTENSIONS.contains((ClassicProtocolExtension) (Object) this)) + private void allowExtensions_isSupported(CallbackInfoReturnable cir) { + if (CustomClassicProtocolExtensions.INSTANCE.ALLOWED_EXTENSIONS.contains((ClassicProtocolExtension) (Object) this)) { cir.setReturnValue(true); + } } @Inject(method = "getHighestSupportedVersion", at = @At("HEAD"), cancellable = true) - public void allowExtensions_getHighestSupportedVersion(CallbackInfoReturnable cir) { - if (CustomClassicProtocolExtensions.INSTANCE.ALLOWED_EXTENSIONS.contains((ClassicProtocolExtension) (Object) this)) + private void allowExtensions_getHighestSupportedVersion(CallbackInfoReturnable cir) { + if (CustomClassicProtocolExtensions.INSTANCE.ALLOWED_EXTENSIONS.contains((ClassicProtocolExtension) (Object) this)) { cir.setReturnValue(1); + } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinClientboundPacketsc0_30cpe.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinClientboundPacketsc0_30cpe.java index 7071498c..96d381a1 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinClientboundPacketsc0_30cpe.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinClientboundPacketsc0_30cpe.java @@ -19,7 +19,7 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.vialegacy; -import de.florianmichael.viafabricplus.definition.classic.CustomClassicProtocolExtensions; +import de.florianmichael.viafabricplus.fixes.classic.CustomClassicProtocolExtensions; import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.ClientboundPacketsc0_30cpe; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -27,7 +27,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = ClientboundPacketsc0_30cpe.class, remap = false) -public class MixinClientboundPacketsc0_30cpe { +public abstract class MixinClientboundPacketsc0_30cpe { @Inject(method = "getPacket", at = @At("HEAD"), cancellable = true) private static void addCustomPackets(int id, CallbackInfoReturnable cir) { @@ -35,4 +35,5 @@ public class MixinClientboundPacketsc0_30cpe { cir.setReturnValue(CustomClassicProtocolExtensions.INSTANCE.CUSTOM_PACKETS.get(id)); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinExtensionProtocolMetadataStorage.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinExtensionProtocolMetadataStorage.java index f875be14..c0e4fcf7 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinExtensionProtocolMetadataStorage.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinExtensionProtocolMetadataStorage.java @@ -33,12 +33,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.EnumMap; @Mixin(value = ExtensionProtocolMetadataStorage.class, remap = false) -public class MixinExtensionProtocolMetadataStorage implements IExtensionProtocolMetadataStorage { +public abstract class MixinExtensionProtocolMetadataStorage implements IExtensionProtocolMetadataStorage { @Shadow @Final private EnumMap serverExtensions; @Inject(method = "addServerExtension", at = @At("RETURN")) - public void updateChatLengthDefinition(ClassicProtocolExtension extension, int version, CallbackInfo ci) { + private void updateChatLengthDefinition(ClassicProtocolExtension extension, int version, CallbackInfo ci) { LoadClassicProtocolExtensionCallback.EVENT.invoker().onLoadClassicProtocolExtension(extension); } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinProtocol1_8to1_7_6_10.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinProtocol1_8to1_7_6_10.java index 1195bab3..47611ed0 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinProtocol1_8to1_7_6_10.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/vialegacy/MixinProtocol1_8to1_7_6_10.java @@ -25,7 +25,7 @@ import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers; import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_8.ClientboundPackets1_8; import com.viaversion.viaversion.protocols.protocol1_8.ServerboundPackets1_8; -import de.florianmichael.viafabricplus.definition.tracker.TeleportTracker; +import de.florianmichael.viafabricplus.fixes.tracker.TeleportTracker; import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.ClientboundPackets1_7_2; import net.raphimc.vialegacy.protocols.release.protocol1_7_6_10to1_7_2_5.ServerboundPackets1_7_2; import net.raphimc.vialegacy.protocols.release.protocol1_8to1_7_6_10.Protocol1_8to1_7_6_10; @@ -35,10 +35,10 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(value = Protocol1_8to1_7_6_10.class, remap = false) -public class MixinProtocol1_8to1_7_6_10 extends AbstractProtocol { +public abstract class MixinProtocol1_8to1_7_6_10 extends AbstractProtocol { @Inject(method = "registerPackets", at = @At("RETURN")) - public void addTeleportTracker(CallbackInfo ci) { + private void addTeleportTracker(CallbackInfo ci) { this.registerClientbound(ClientboundPackets1_7_2.PLAYER_POSITION, ClientboundPackets1_8.PLAYER_POSITION, new PacketHandlers() { @Override public void register() { @@ -83,7 +83,8 @@ public class MixinProtocol1_8to1_7_6_10 extends AbstractProtocol { +public abstract class MixinProtocolc0_30toc0_30cpe extends AbstractProtocol { @Inject(method = "registerPackets", at = @At("RETURN")) - public void extendPackets(CallbackInfo ci) { + private void extendPackets(CallbackInfo ci) { this.registerClientbound(CustomClassicProtocolExtensions.EXT_WEATHER_TYPE, null, new PacketHandlers() { @Override public void register() { @@ -63,4 +63,5 @@ public class MixinProtocolc0_30toc0_30cpe extends AbstractProtocol cir) { cir.setReturnValue(AuthenticationSettings.INSTANCE.allowViaLegacyToLoadSkinsInLegacyVersions.getValue()); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinChatItemRewriter.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinChatItemRewriter.java index 9fd320ec..57f51381 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinChatItemRewriter.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinChatItemRewriter.java @@ -42,4 +42,5 @@ public abstract class MixinChatItemRewriter { } return Pattern.compile("$^").matcher(input); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinChunkType1_8.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinChunkType1_8.java index 26aff03c..23635054 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinChunkType1_8.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinChunkType1_8.java @@ -52,4 +52,5 @@ public abstract class MixinChunkType1_8 { return new BaseChunk(chunkX, chunkZ, fullChunk, false, 65535, airSections, new int[256], new ArrayList<>()); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinCommandBlockProvider.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinCommandBlockProvider.java index 07820012..391c6dbe 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinCommandBlockProvider.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinCommandBlockProvider.java @@ -25,10 +25,11 @@ import org.spongepowered.asm.mixin.injection.Constant; import org.spongepowered.asm.mixin.injection.ModifyConstant; @Mixin(CommandBlockProvider.class) -public class MixinCommandBlockProvider { +public abstract class MixinCommandBlockProvider { @ModifyConstant(method = "sendPermission", constant = @Constant(intValue = 26), remap = false) - public int modifyPermissionLevel(int constant) { + private int modifyPermissionLevel(int constant) { return 28; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinCommonBoss.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinCommonBoss.java index 908f9056..8257f925 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinCommonBoss.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinCommonBoss.java @@ -25,9 +25,10 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(value = CommonBoss.class, remap = false) -public class MixinCommonBoss { +public abstract class MixinCommonBoss { @Redirect(method = { "", "setHealth" }, at = @At(value = "INVOKE", target = "Lcom/google/common/base/Preconditions;checkArgument(ZLjava/lang/Object;)V")) - public void ignoreHealthCheck(boolean expression, Object errorMessage) { + private void ignoreHealthCheck(boolean expression, Object errorMessage) { } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityIdRewriter.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityIdRewriter.java index b54925a9..77b08738 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityIdRewriter.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityIdRewriter.java @@ -26,9 +26,10 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(value = EntityIdRewriter.class, remap = false) -public class MixinEntityIdRewriter { +public abstract class MixinEntityIdRewriter { @Redirect(method = "toClientItem(Lcom/viaversion/viaversion/api/minecraft/item/Item;Z)V", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/api/minecraft/item/Item;setAmount(I)V")) private static void allowNegativeItems(Item instance, int i) { } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityPackets1_17.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityPackets1_17.java index b6ea3574..353b963b 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityPackets1_17.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityPackets1_17.java @@ -25,7 +25,7 @@ import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4; import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.packets.EntityPackets; -import de.florianmichael.viafabricplus.definition.classic.ClassicWorldHeightInjection; +import de.florianmichael.viafabricplus.fixes.classic.ClassicWorldHeightInjection; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -41,4 +41,5 @@ public abstract class MixinEntityPackets1_17 { ((Protocol) instance).registerClientbound(packetType, packetHandler); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityPackets_6_1.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityPackets_6_1.java index 81b75639..4e868531 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityPackets_6_1.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinEntityPackets_6_1.java @@ -40,4 +40,5 @@ public abstract class MixinEntityPackets_6_1 { cir.setReturnValue(0); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinInventoryAcknowledgements.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinInventoryAcknowledgements.java index eb3ff097..1cdba175 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinInventoryAcknowledgements.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinInventoryAcknowledgements.java @@ -30,7 +30,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = InventoryAcknowledgements.class, remap = false) -public class MixinInventoryAcknowledgements { +public abstract class MixinInventoryAcknowledgements { @Mutable @Shadow @Final private IntList ids; @@ -38,19 +38,20 @@ public class MixinInventoryAcknowledgements { private it.unimi.dsi.fastutil.ints.IntList viaFabricPlus$ids; @Inject(method = "", at = @At("RETURN")) - public void fixJavaIssue(CallbackInfo ci) { + private void fixJavaIssue(CallbackInfo ci) { this.ids = null; this.viaFabricPlus$ids = IntLists.synchronize(new IntArrayList()); } @Inject(method = "addId", at = @At("HEAD"), cancellable = true) - public void forwardAdd(int id, CallbackInfo ci) { + private void forwardAdd(int id, CallbackInfo ci) { viaFabricPlus$ids.add(id); ci.cancel(); } @Inject(method = "removeId", at = @At("HEAD"), cancellable = true) - public void forwardRemove(int id, CallbackInfoReturnable cir) { + private void forwardRemove(int id, CallbackInfoReturnable cir) { cir.setReturnValue(viaFabricPlus$ids.rem(id)); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinInventoryPackets.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinInventoryPackets.java index 73252b3a..4faefd9f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinInventoryPackets.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinInventoryPackets.java @@ -29,8 +29,8 @@ import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.libs.gson.JsonElement; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.ClientboundPackets1_14; import com.viaversion.viaversion.protocols.protocol1_14to1_13_2.packets.InventoryPackets; -import de.florianmichael.viafabricplus.definition.ClientsideFixes; -import de.florianmichael.viafabricplus.definition.TripleChestHandler1_13_2; +import de.florianmichael.viafabricplus.fixes.ClientsideFixes; +import de.florianmichael.viafabricplus.fixes.TripleChestHandler1_13_2; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import io.netty.buffer.Unpooled; import net.minecraft.SharedConstants; @@ -45,7 +45,7 @@ import java.util.logging.Level; import java.util.stream.Collectors; @Mixin(value = InventoryPackets.class, remap = false) -public class MixinInventoryPackets { +public abstract class MixinInventoryPackets { @Inject(method = "lambda$registerPackets$0", at = @At(value = "INVOKE", target = "Ljava/util/logging/Logger;warning(Ljava/lang/String;)V"), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true) private static void supportCustomSlots(PacketWrapper wrapper, CallbackInfo ci, Short windowId, String type, JsonElement title, Short slots, int typeId) { @@ -80,4 +80,5 @@ public class MixinInventoryPackets { ci.cancel(); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinMetadataRewriter1_15To1_14_4.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinMetadataRewriter1_15To1_14_4.java index a38c608c..77ac998f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinMetadataRewriter1_15To1_14_4.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinMetadataRewriter1_15To1_14_4.java @@ -26,7 +26,7 @@ import com.viaversion.viaversion.protocols.protocol1_14_4to1_14_3.ClientboundPac import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.Protocol1_15To1_14_4; import com.viaversion.viaversion.protocols.protocol1_15to1_14_4.metadata.MetadataRewriter1_15To1_14_4; import com.viaversion.viaversion.rewriter.EntityRewriter; -import de.florianmichael.viafabricplus.definition.tracker.WolfHealthTracker; +import de.florianmichael.viafabricplus.fixes.tracker.WolfHealthTracker; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -43,7 +43,8 @@ public abstract class MixinMetadataRewriter1_15To1_14_4 extends EntityRewriter metadatas, UserConnection connection, CallbackInfo ci) { + private void trackHealth(int entityId, EntityType type, Metadata metadata, List metadatas, UserConnection connection, CallbackInfo ci) { WolfHealthTracker.get().getHealthDataMap().put(entityId, (Float) metadata.getValue()); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinMetadataRewriter1_9To1_8.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinMetadataRewriter1_9To1_8.java index a315f723..d83cc007 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinMetadataRewriter1_9To1_8.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinMetadataRewriter1_9To1_8.java @@ -40,4 +40,5 @@ public abstract class MixinMetadataRewriter1_9To1_8 { ci.cancel(); } } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinNamedCompoundTagType.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinNamedCompoundTagType.java index 47f66fbf..388391b1 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinNamedCompoundTagType.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinNamedCompoundTagType.java @@ -27,10 +27,10 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(value = NamedCompoundTagType.class, remap = false) -public class MixinNamedCompoundTagType { +public abstract class MixinNamedCompoundTagType { @Unique - private final static TagLimiter viaFabricPlus$tag_limiter = new TagLimiter() { + private static final TagLimiter viaFabricPlus$tag_limiter = new TagLimiter() { private final int maxBytes = 2097152; private int bytes; @@ -65,4 +65,5 @@ public class MixinNamedCompoundTagType { private static TagLimiter replaceTagLimiter(int maxBytes, int maxLevels) { return viaFabricPlus$tag_limiter; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinProtocol1_11To1_10.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinProtocol1_11To1_10.java index b26ed2fc..671a8540 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinProtocol1_11To1_10.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinProtocol1_11To1_10.java @@ -19,16 +19,17 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.viaversion; -import de.florianmichael.viafabricplus.definition.ClientsideFixes; +import de.florianmichael.viafabricplus.fixes.ClientsideFixes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; import org.spongepowered.asm.mixin.injection.ModifyConstant; @Mixin(targets = "com.viaversion.viaversion.protocols.protocol1_11to1_10.Protocol1_11To1_10$13", remap = false) -public class MixinProtocol1_11To1_10 { +public abstract class MixinProtocol1_11To1_10 { @ModifyConstant(method = "lambda$register$0", constant = @Constant(intValue = 100)) private static int changeMaxChatLength(int constant) { return ClientsideFixes.getCurrentChatLimit(); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinSkullHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinSkullHandler.java index ce9b7d01..9e2c907a 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinSkullHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinSkullHandler.java @@ -27,10 +27,11 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = SkullHandler.class, remap = false) -public class MixinSkullHandler { +public abstract class MixinSkullHandler { @Inject(method = "getLong", at = @At("HEAD"), cancellable = true) public void checkIfTagExists(NumberTag tag, CallbackInfoReturnable cir) { if (tag == null) cir.setReturnValue(0L); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_13.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_13.java index f79611e7..16f5b0b0 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_13.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_13.java @@ -32,4 +32,5 @@ public abstract class MixinWorldPackets1_13 { private static void returnAirDefault(int oldId, CallbackInfoReturnable cir) { cir.setReturnValue(0); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_16_2.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_16_2.java index 76ca2027..73d9dd06 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_16_2.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_16_2.java @@ -31,4 +31,5 @@ public abstract class MixinWorldPackets1_16_2 { private static int modifySectionCountToSupportClassicWorldHeight(int constant) { return 64; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_17.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_17.java index 8c0c540b..6378b40f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_17.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_17.java @@ -25,7 +25,7 @@ import com.viaversion.viaversion.api.protocol.remapper.PacketHandler; import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ClientboundPackets1_16_2; import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4; import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.packets.WorldPackets; -import de.florianmichael.viafabricplus.definition.classic.ClassicWorldHeightInjection; +import de.florianmichael.viafabricplus.fixes.classic.ClassicWorldHeightInjection; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @@ -41,4 +41,5 @@ public abstract class MixinWorldPackets1_17 { ((Protocol) instance).registerClientbound(packetType, packetHandler); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_19.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_19.java index 2c6929bf..7162856f 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_19.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/fixes/viaversion/MixinWorldPackets1_19.java @@ -26,14 +26,14 @@ import com.viaversion.viaversion.protocols.protocol1_18to1_17_1.ClientboundPacke import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.ClientboundPackets1_19; import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.Protocol1_19To1_18_2; import com.viaversion.viaversion.protocols.protocol1_19to1_18_2.packets.WorldPackets; -import de.florianmichael.viafabricplus.definition.ClientPlayerInteractionManager1_18_2; -import de.florianmichael.viafabricplus.definition.ClientsideFixes; +import de.florianmichael.viafabricplus.fixes.ClientPlayerInteractionManager1_18_2; +import de.florianmichael.viafabricplus.fixes.ClientsideFixes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(value = WorldPackets.class, remap = false) -public class MixinWorldPackets1_19 { +public abstract class MixinWorldPackets1_19 { @Redirect(method = "register", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocols/protocol1_19to1_18_2/Protocol1_19To1_18_2;cancelClientbound(Lcom/viaversion/viaversion/api/protocol/packet/ClientboundPacketType;)V")) private static void passAcknowledgePlayerDigging(Protocol1_19To1_18_2 instance, ClientboundPacketType clientboundPacketType) { @@ -50,4 +50,5 @@ public class MixinWorldPackets1_19 { wrapper.write(Type.STRING, uuid); }); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinAbstractFenceConnectionHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinAbstractFenceConnectionHandler.java index 56a0b098..5a0b2737 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinAbstractFenceConnectionHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinAbstractFenceConnectionHandler.java @@ -51,4 +51,5 @@ public abstract class MixinAbstractFenceConnectionHandler { if (connects(BlockFace.WEST, getBlockData(user, position.getRelative(BlockFace.WEST)), pre1_12)) states |= 8; return states; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinGlassConnectionHandler.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinGlassConnectionHandler.java index 68c0a30c..5f34714e 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinGlassConnectionHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinGlassConnectionHandler.java @@ -49,4 +49,5 @@ public abstract class MixinGlassConnectionHandler extends AbstractFenceConnectio ProtocolInfo protocolInfo = user.getProtocolInfo(); return ProtocolHack.getTargetVersion().isOlderThanOrEqualTo(VersionEnum.r1_8) && protocolInfo.getServerProtocolVersion() != -1 ? 0xF : states; } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinProtocolVersion.java b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinProtocolVersion.java index 1f95a8e5..2145e98b 100644 --- a/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinProtocolVersion.java +++ b/src/main/java/de/florianmichael/viafabricplus/injection/mixin/viaversion/MixinProtocolVersion.java @@ -82,4 +82,5 @@ public abstract class MixinProtocolVersion { return ProtocolVersion.register(version, name, versionRange); } + } diff --git a/src/main/java/de/florianmichael/viafabricplus/mappings/PackFormatsMappings.java b/src/main/java/de/florianmichael/viafabricplus/mappings/PackFormatsMappings.java index 1771913a..53416e25 100644 --- a/src/main/java/de/florianmichael/viafabricplus/mappings/PackFormatsMappings.java +++ b/src/main/java/de/florianmichael/viafabricplus/mappings/PackFormatsMappings.java @@ -32,7 +32,7 @@ import java.util.HashMap; import java.util.Map; public class PackFormatsMappings { - private final static Map protocolMap = new HashMap<>(); + private static final Map protocolMap = new HashMap<>(); public static void load() { registerVersion(VersionEnum.r1_20_3, 22, "1.20.3-pre2"); diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/ProtocolHack.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/ProtocolHack.java index 31edf9ef..34e7b455 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/ProtocolHack.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/ProtocolHack.java @@ -43,6 +43,7 @@ import io.netty.util.AttributeKey; import net.fabricmc.fabric.api.client.command.v2.ClientCommandRegistrationCallback; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.network.ClientPlayNetworkHandler; import net.minecraft.network.ClientConnection; import net.raphimc.vialoader.ViaLoader; import net.raphimc.vialoader.impl.platform.ViaAprilFoolsPlatformImpl; @@ -60,17 +61,17 @@ public class ProtocolHack { /** * These attribute keys are used to track the main connections of Minecraft and ViaVersion, so that they can be used later during the connection to send packets. */ - public final static AttributeKey CLIENT_CONNECTION_ATTRIBUTE_KEY = AttributeKey.newInstance("viafabricplus-clientconnection"); + public static final AttributeKey CLIENT_CONNECTION_ATTRIBUTE_KEY = AttributeKey.newInstance("viafabricplus-clientconnection"); /** * This attribute stores the forced version for the current connection (if you set a specific version in the Edit Server screen) */ - public final static AttributeKey SERVER_VERSION_ATTRIBUTE_KEY = AttributeKey.newInstance("viafabricplus-serverversion"); + public static final AttributeKey SERVER_VERSION_ATTRIBUTE_KEY = AttributeKey.newInstance("viafabricplus-serverversion"); /** * The native version of the client */ - public final static VersionEnum NATIVE_VERSION = VersionEnum.r1_20_2; + public static final VersionEnum NATIVE_VERSION = VersionEnum.r1_20_2; /** * This field stores the target version that you set in the GUI @@ -84,7 +85,7 @@ public class ProtocolHack { */ public static void injectViaPipeline(final ClientConnection connection, final Channel channel) { final IClientConnection mixinClientConnection = (IClientConnection) connection; - final VersionEnum serverVersion = mixinClientConnection.viaFabricPlus$getServerVersion(); + final VersionEnum serverVersion = mixinClientConnection.viaFabricPlus$getTargetVersion(); if (serverVersion != ProtocolHack.NATIVE_VERSION) { channel.attr(ProtocolHack.CLIENT_CONNECTION_ATTRIBUTE_KEY).set(connection); @@ -147,7 +148,7 @@ public class ProtocolHack { */ @Deprecated public static UserConnection createFakerUserConnection() { - return createFakerUserConnection(getMainUserConnection().getChannel()); + return createFakerUserConnection(getPlayNetworkUserConnection().getChannel()); } /** @@ -169,14 +170,15 @@ public class ProtocolHack { } /** - * @return Returns the current ViaVersion UserConnection via the LOCAL_VIA_CONNECTION channel attribute + * @return Returns the current UserConnection of the connection to the server, if the player isn't connected to a server it will return null */ - @Deprecated - public static UserConnection getMainUserConnection() { - final MinecraftClient client = MinecraftClient.getInstance(); - if (client.getNetworkHandler() == null) return null; + public static UserConnection getPlayNetworkUserConnection() { + final ClientPlayNetworkHandler handler = MinecraftClient.getInstance().getNetworkHandler(); + if (handler != null) { + return ((IClientConnection) handler.getConnection()).viaFabricPlus$getUserConnection(); + } - return ((IClientConnection) client.getNetworkHandler().getConnection()).viaFabricPlus$getUserConnection(); + return null; } /** diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/command/ViaFabricPlusVLCommandHandler.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/command/ViaFabricPlusVLCommandHandler.java index 7b70d0e0..d14b5f34 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/command/ViaFabricPlusVLCommandHandler.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/command/ViaFabricPlusVLCommandHandler.java @@ -23,8 +23,8 @@ import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import de.florianmichael.viafabricplus.definition.classic.command.impl.ListExtensionsCommand; -import de.florianmichael.viafabricplus.definition.classic.command.impl.SetTimeCommand; +import de.florianmichael.viafabricplus.fixes.classic.command.impl.ListExtensionsCommand; +import de.florianmichael.viafabricplus.fixes.classic.command.impl.SetTimeCommand; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.raphimc.vialoader.impl.viaversion.VLCommandHandler; diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/ViaFabricPlusVLLegacyPipeline.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/ViaFabricPlusVLLegacyPipeline.java index b4e5f130..dc61baf0 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/ViaFabricPlusVLLegacyPipeline.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/netty/ViaFabricPlusVLLegacyPipeline.java @@ -30,9 +30,9 @@ import net.raphimc.vialoader.util.VersionEnum; public class ViaFabricPlusVLLegacyPipeline extends VLLegacyPipeline { - public final static String VIABEDROCK_COMPRESSION_HANDLER_NAME = "viabedrock-compression"; - public final static String VIABEDROCK_ENCRYPTION_HANDLER_NAME = "viabedrock-encryption"; - public final static String VIABEDROCK_PING_ENCAPSULATION_HANDLER_NAME = "viabedrock-ping-encapsulation"; + public static final String VIABEDROCK_COMPRESSION_HANDLER_NAME = "viabedrock-compression"; + public static final String VIABEDROCK_ENCRYPTION_HANDLER_NAME = "viabedrock-encryption"; + public static final String VIABEDROCK_PING_ENCAPSULATION_HANDLER_NAME = "viabedrock-ping-encapsulation"; public ViaFabricPlusVLLegacyPipeline(UserConnection user, VersionEnum version) { super(user, version); diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/provider/vialegacy/ViaFabricPlusGameProfileFetcher.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/provider/vialegacy/ViaFabricPlusGameProfileFetcher.java index d31f5764..ef5ae142 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/provider/vialegacy/ViaFabricPlusGameProfileFetcher.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/provider/vialegacy/ViaFabricPlusGameProfileFetcher.java @@ -34,9 +34,9 @@ import java.util.UUID; import java.util.concurrent.CompletableFuture; public class ViaFabricPlusGameProfileFetcher extends GameProfileFetcher { - public final static HttpAuthenticationService AUTHENTICATION_SERVICE = new YggdrasilAuthenticationService(Proxy.NO_PROXY); - public final static MinecraftSessionService SESSION_SERVICE = AUTHENTICATION_SERVICE.createMinecraftSessionService(); - public final static GameProfileRepository GAME_PROFILE_REPOSITORY = AUTHENTICATION_SERVICE.createProfileRepository(); + public static final HttpAuthenticationService AUTHENTICATION_SERVICE = new YggdrasilAuthenticationService(Proxy.NO_PROXY); + public static final MinecraftSessionService SESSION_SERVICE = AUTHENTICATION_SERVICE.createMinecraftSessionService(); + public static final GameProfileRepository GAME_PROFILE_REPOSITORY = AUTHENTICATION_SERVICE.createProfileRepository(); @Override public UUID loadMojangUUID(String playerName) throws Exception { diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/BlockStateTranslator.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/BlockStateTranslator.java index df3b888f..520de961 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/BlockStateTranslator.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/BlockStateTranslator.java @@ -38,7 +38,7 @@ import java.util.List; import java.util.stream.Collectors; public class BlockStateTranslator { - private final static UserConnection DUMMY_USER_CONNECTION = ProtocolHack.createFakerUserConnection(null); + private static final UserConnection DUMMY_USER_CONNECTION = ProtocolHack.createFakerUserConnection(null); public static int translateBlockState1_18(int oldId) { final List protocolPath = Via.getManager().getProtocolManager().getProtocolPath(ProtocolHack.NATIVE_VERSION.getVersion(), ProtocolVersion.v1_18_2.getVersion()); diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/ItemTranslator.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/ItemTranslator.java index c72d6c44..01bdf826 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/ItemTranslator.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/ItemTranslator.java @@ -47,7 +47,7 @@ import java.util.List; import java.util.stream.Collectors; public class ItemTranslator { - private final static UserConnection DUMMY_USER_CONNECTION = ProtocolHack.createFakerUserConnection(null); + private static final UserConnection DUMMY_USER_CONNECTION = ProtocolHack.createFakerUserConnection(null); public static Item MC_TO_VIA_LATEST_TO_TARGET(final ItemStack stack, final VersionEnum targetVersion) { final List protocolPath = Via.getManager().getProtocolManager().getProtocolPath(ProtocolHack.NATIVE_VERSION.getVersion(), targetVersion.getVersion()); diff --git a/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/ViaJarReplacer.java b/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/ViaJarReplacer.java index 0addba16..0f9a5bc5 100644 --- a/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/ViaJarReplacer.java +++ b/src/main/java/de/florianmichael/viafabricplus/protocolhack/util/ViaJarReplacer.java @@ -33,7 +33,7 @@ public class ViaJarReplacer { /** * The folder where the overriding jars are located */ - public final static File VIA_JAR_OVERRIDING_FOLDER = new File(ViaFabricPlus.RUN_DIRECTORY, "jars"); + public static final File VIA_JAR_OVERRIDING_FOLDER = new File(ViaFabricPlus.RUN_DIRECTORY, "jars"); /** * Loads all overriding jars diff --git a/src/main/java/de/florianmichael/viafabricplus/screen/MappedSlotEntry.java b/src/main/java/de/florianmichael/viafabricplus/screen/MappedSlotEntry.java index 294fb82c..d7ec8dd3 100644 --- a/src/main/java/de/florianmichael/viafabricplus/screen/MappedSlotEntry.java +++ b/src/main/java/de/florianmichael/viafabricplus/screen/MappedSlotEntry.java @@ -31,8 +31,8 @@ import net.minecraft.util.math.MathHelper; * functions and features used in all screens which are added by ViaFabricPlus */ public abstract class MappedSlotEntry extends AlwaysSelectedEntryListWidget.Entry { - protected final static int SCISSORS_OFFSET = 4; - public final static int SLOT_MARGIN = 3; + protected static final int SCISSORS_OFFSET = 4; + public static final int SLOT_MARGIN = 3; public abstract void mappedRender(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta); public void mappedMouseClicked(double mouseX, double mouseY, int button) { diff --git a/src/main/java/de/florianmichael/viafabricplus/screen/VFPScreen.java b/src/main/java/de/florianmichael/viafabricplus/screen/VFPScreen.java index 20ba8028..57f7fbe7 100644 --- a/src/main/java/de/florianmichael/viafabricplus/screen/VFPScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/screen/VFPScreen.java @@ -42,7 +42,7 @@ import java.awt.*; */ public class VFPScreen extends Screen { - private final static String MOD_URL = "https://github.com/ViaVersion/ViaFabricPlus"; + private static final String MOD_URL = "https://github.com/ViaVersion/ViaFabricPlus"; private final boolean backButton; public Screen prevScreen; diff --git a/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/BetaCraftScreen.java b/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/BetaCraftScreen.java index f2435f8a..50ca0eb1 100644 --- a/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/BetaCraftScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/BetaCraftScreen.java @@ -41,9 +41,9 @@ import java.util.List; public class BetaCraftScreen extends VFPScreen { public static BCServerList SERVER_LIST; - public final static BetaCraftScreen INSTANCE = new BetaCraftScreen(); + public static final BetaCraftScreen INSTANCE = new BetaCraftScreen(); - private final static String BETA_CRAFT_SERVER_LIST_URL = "https://betacraft.uk/serverlist/"; + private static final String BETA_CRAFT_SERVER_LIST_URL = "https://betacraft.uk/serverlist/"; protected BetaCraftScreen() { super("BetaCraft", true); diff --git a/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeLoginScreen.java b/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeLoginScreen.java index 2010c2c7..48c335b3 100644 --- a/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeLoginScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeLoginScreen.java @@ -25,7 +25,7 @@ import de.florianmichael.classic4j.api.LoginProcessHandler; import de.florianmichael.classic4j.model.classicube.account.CCAccount; import de.florianmichael.viafabricplus.injection.access.ITextFieldWidget; import de.florianmichael.viafabricplus.screen.VFPScreen; -import de.florianmichael.viafabricplus.definition.account.ClassiCubeAccountHandler; +import de.florianmichael.viafabricplus.fixes.account.ClassiCubeAccountHandler; import de.florianmichael.viafabricplus.screen.common.ProtocolSelectionScreen; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.ConfirmLinkScreen; @@ -35,9 +35,9 @@ import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.text.Text; public class ClassiCubeLoginScreen extends VFPScreen { - public final static ClassiCubeLoginScreen INSTANCE = new ClassiCubeLoginScreen(); + public static final ClassiCubeLoginScreen INSTANCE = new ClassiCubeLoginScreen(); - private final static String CLASSI_CUBE_URL = "https://www.classicube.net/"; + private static final String CLASSI_CUBE_URL = "https://www.classicube.net/"; public ClassiCubeLoginScreen() { super("ClassiCube Login", false); diff --git a/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeMFAScreen.java b/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeMFAScreen.java index 0579c314..8cc122f0 100644 --- a/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeMFAScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeMFAScreen.java @@ -24,7 +24,7 @@ import de.florianmichael.classic4j.ClassiCubeHandler; import de.florianmichael.classic4j.api.LoginProcessHandler; import de.florianmichael.classic4j.model.classicube.account.CCAccount; import de.florianmichael.viafabricplus.screen.VFPScreen; -import de.florianmichael.viafabricplus.definition.account.ClassiCubeAccountHandler; +import de.florianmichael.viafabricplus.fixes.account.ClassiCubeAccountHandler; import de.florianmichael.viafabricplus.screen.common.ProtocolSelectionScreen; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; @@ -33,7 +33,7 @@ import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.text.Text; public class ClassiCubeMFAScreen extends VFPScreen { - public final static ClassiCubeMFAScreen INSTANCE = new ClassiCubeMFAScreen(); + public static final ClassiCubeMFAScreen INSTANCE = new ClassiCubeMFAScreen(); public ClassiCubeMFAScreen() { super("ClassiCube MFA", false); diff --git a/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeServerListScreen.java b/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeServerListScreen.java index 09a4367a..c7d04554 100644 --- a/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeServerListScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/screen/classic4j/classicube/ClassiCubeServerListScreen.java @@ -23,7 +23,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import de.florianmichael.classic4j.ClassiCubeHandler; import de.florianmichael.classic4j.api.LoginProcessHandler; import de.florianmichael.classic4j.model.classicube.server.CCServerInfo; -import de.florianmichael.viafabricplus.definition.account.ClassiCubeAccountHandler; +import de.florianmichael.viafabricplus.fixes.account.ClassiCubeAccountHandler; import de.florianmichael.viafabricplus.injection.access.IServerInfo; import de.florianmichael.viafabricplus.protocolhack.provider.vialegacy.ViaFabricPlusClassicMPPassProvider; import de.florianmichael.viafabricplus.screen.MappedSlotEntry; @@ -47,10 +47,10 @@ import java.util.ArrayList; import java.util.List; public class ClassiCubeServerListScreen extends VFPScreen { - public final static List SERVER_LIST = new ArrayList<>(); - public final static ClassiCubeServerListScreen INSTANCE = new ClassiCubeServerListScreen(); + public static final List SERVER_LIST = new ArrayList<>(); + public static final ClassiCubeServerListScreen INSTANCE = new ClassiCubeServerListScreen(); - private final static String CLASSICUBE_SERVER_LIST_URL = "https://www.classicube.net/server/list/"; + private static final String CLASSICUBE_SERVER_LIST_URL = "https://www.classicube.net/server/list/"; public static void open(final Screen prevScreen, final LoginProcessHandler loginProcessHandler) { ClassiCubeHandler.requestServerList(ClassiCubeAccountHandler.INSTANCE.getAccount(), ccServerList -> { diff --git a/src/main/java/de/florianmichael/viafabricplus/screen/common/ProtocolSelectionScreen.java b/src/main/java/de/florianmichael/viafabricplus/screen/common/ProtocolSelectionScreen.java index e7e4925f..ba39add2 100644 --- a/src/main/java/de/florianmichael/viafabricplus/screen/common/ProtocolSelectionScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/screen/common/ProtocolSelectionScreen.java @@ -21,7 +21,7 @@ package de.florianmichael.viafabricplus.screen.common; import de.florianmichael.classic4j.BetaCraftHandler; import de.florianmichael.viafabricplus.screen.VFPScreen; -import de.florianmichael.viafabricplus.definition.account.ClassiCubeAccountHandler; +import de.florianmichael.viafabricplus.fixes.account.ClassiCubeAccountHandler; import de.florianmichael.viafabricplus.protocolhack.ProtocolHack; import de.florianmichael.viafabricplus.screen.settings.SettingsScreen; import de.florianmichael.viafabricplus.screen.classic4j.BetaCraftScreen; @@ -40,7 +40,7 @@ import net.raphimc.vialoader.util.VersionEnum; import java.awt.*; public class ProtocolSelectionScreen extends VFPScreen { - public final static ProtocolSelectionScreen INSTANCE = new ProtocolSelectionScreen(); + public static final ProtocolSelectionScreen INSTANCE = new ProtocolSelectionScreen(); private ButtonWidget betaCraftButton; diff --git a/src/main/java/de/florianmichael/viafabricplus/screen/settings/SettingsScreen.java b/src/main/java/de/florianmichael/viafabricplus/screen/settings/SettingsScreen.java index d77f5bdf..07cb4eba 100644 --- a/src/main/java/de/florianmichael/viafabricplus/screen/settings/SettingsScreen.java +++ b/src/main/java/de/florianmichael/viafabricplus/screen/settings/SettingsScreen.java @@ -30,7 +30,7 @@ import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.widget.AlwaysSelectedEntryListWidget; public class SettingsScreen extends VFPScreen { - public final static SettingsScreen INSTANCE = new SettingsScreen(); + public static final SettingsScreen INSTANCE = new SettingsScreen(); public SettingsScreen() { super("Setting", true); diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/impl/AuthenticationSettings.java b/src/main/java/de/florianmichael/viafabricplus/settings/impl/AuthenticationSettings.java index 65bdaed8..418fd4ea 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/impl/AuthenticationSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/impl/AuthenticationSettings.java @@ -24,7 +24,7 @@ import de.florianmichael.viafabricplus.settings.type.BooleanSetting; import net.minecraft.text.Text; public class AuthenticationSettings extends SettingGroup { - public final static AuthenticationSettings INSTANCE = new AuthenticationSettings(); + public static final AuthenticationSettings INSTANCE = new AuthenticationSettings(); public final BooleanSetting useBetaCraftAuthentication = new BooleanSetting(this, Text.translatable("authentication.viafabricplus.betacraft"), true); public final BooleanSetting allowViaLegacyToCallJoinServerToVerifySession = new BooleanSetting(this, Text.translatable("authentication.viafabricplus.verify"), true); diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/impl/BedrockSettings.java b/src/main/java/de/florianmichael/viafabricplus/settings/impl/BedrockSettings.java index 6315cdc7..4a8c5c40 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/impl/BedrockSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/impl/BedrockSettings.java @@ -23,7 +23,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import de.florianmichael.viafabricplus.settings.SettingGroup; import de.florianmichael.viafabricplus.settings.type.BooleanSetting; import de.florianmichael.viafabricplus.settings.type.ButtonSetting; -import de.florianmichael.viafabricplus.definition.account.BedrockAccountHandler; +import de.florianmichael.viafabricplus.fixes.account.BedrockAccountHandler; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.ConfirmScreen; import net.minecraft.client.gui.screen.NoticeScreen; @@ -40,7 +40,7 @@ import java.net.URISyntaxException; import java.util.concurrent.CompletableFuture; public class BedrockSettings extends SettingGroup { - public final static BedrockSettings INSTANCE = new BedrockSettings(); + public static final BedrockSettings INSTANCE = new BedrockSettings(); public final ButtonSetting BEDROCK_ACCOUNT = new ButtonSetting(this, Text.translatable("bedrock.viafabricplus.authentication"), () -> CompletableFuture.runAsync(() -> { final var prevScreen = MinecraftClient.getInstance().currentScreen; diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/impl/DebugSettings.java b/src/main/java/de/florianmichael/viafabricplus/settings/impl/DebugSettings.java index a8e8b1c2..43f7b6be 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/impl/DebugSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/impl/DebugSettings.java @@ -26,7 +26,7 @@ import net.minecraft.text.Text; import net.raphimc.vialoader.util.VersionRange; public class DebugSettings extends SettingGroup { - public final static DebugSettings INSTANCE = new DebugSettings(); + public static final DebugSettings INSTANCE = new DebugSettings(); // 1.19 -> 1.18.2 public final ProtocolSyncBooleanSetting disableSequencing = new ProtocolSyncBooleanSetting(this, Text.translatable("debug.viafabricplus.sequence"), VersionRange.andOlder(VersionEnum.r1_18_2)); diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/impl/ExperimentalSettings.java b/src/main/java/de/florianmichael/viafabricplus/settings/impl/ExperimentalSettings.java index 30888806..506a2e08 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/impl/ExperimentalSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/impl/ExperimentalSettings.java @@ -24,7 +24,7 @@ import de.florianmichael.viafabricplus.settings.type.BooleanSetting; import net.minecraft.text.Text; public class ExperimentalSettings extends SettingGroup { - public final static ExperimentalSettings INSTANCE = new ExperimentalSettings(); + public static final ExperimentalSettings INSTANCE = new ExperimentalSettings(); public final BooleanSetting fixChunkBorders = new BooleanSetting(this, Text.translatable("experimental.viafabricplus.chunkborderfix"), true); public final BooleanSetting waterMovementEdgeDetection = new BooleanSetting(this, Text.translatable("experimental.viafabricplus.watermovement"), true); diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/impl/GeneralSettings.java b/src/main/java/de/florianmichael/viafabricplus/settings/impl/GeneralSettings.java index 78c21c89..7ad2d235 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/impl/GeneralSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/impl/GeneralSettings.java @@ -22,10 +22,11 @@ package de.florianmichael.viafabricplus.settings.impl; import de.florianmichael.viafabricplus.settings.SettingGroup; import de.florianmichael.viafabricplus.settings.type.BooleanSetting; import de.florianmichael.viafabricplus.settings.type.ModeSetting; +import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.text.Text; public class GeneralSettings extends SettingGroup { - public final static GeneralSettings INSTANCE = new GeneralSettings(); + public static final GeneralSettings INSTANCE = new GeneralSettings(); public final ModeSetting multiplayerScreenButtonOrientation = new ModeSetting(this, Text.translatable("general.viafabricplus.multiplayerscreenbutton"), 1, Text.translatable("misc.viafabricplus.lt"), @@ -58,4 +59,14 @@ public class GeneralSettings extends SettingGroup { public GeneralSettings() { super(Text.translatable("settings.viafabricplus.general")); } + + public static ButtonWidget.Builder withOrientation(final ButtonWidget.Builder builder, final int orientationIndex, final int width, final int height) { + return switch (orientationIndex) { + case 0 -> builder.position(5, 5); + case 1 -> builder.position(width - 98 - 5, 5); + case 2 -> builder.position(5, height - 20 - 5); + case 3 -> builder.position(width - 98 - 5, height - 20 - 5); + default -> builder; + }; + } } diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java b/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java index 7d597dfc..b25a15c7 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/impl/VisualSettings.java @@ -26,7 +26,7 @@ import net.minecraft.text.Text; import net.raphimc.vialoader.util.VersionRange; public class VisualSettings extends SettingGroup { - public final static VisualSettings INSTANCE = new VisualSettings(); + public static final VisualSettings INSTANCE = new VisualSettings(); // 1.19.2 -> 1.19 public final ProtocolSyncBooleanSetting disableSecureChatWarning = new ProtocolSyncBooleanSetting(this, Text.translatable("visual.viafabricplus.secure"), VersionRange.andOlder(VersionEnum.r1_19)); diff --git a/src/main/java/de/florianmichael/viafabricplus/settings/type/ProtocolSyncBooleanSetting.java b/src/main/java/de/florianmichael/viafabricplus/settings/type/ProtocolSyncBooleanSetting.java index 4049f4bb..4da451be 100644 --- a/src/main/java/de/florianmichael/viafabricplus/settings/type/ProtocolSyncBooleanSetting.java +++ b/src/main/java/de/florianmichael/viafabricplus/settings/type/ProtocolSyncBooleanSetting.java @@ -29,8 +29,8 @@ import net.minecraft.text.MutableText; import net.raphimc.vialoader.util.VersionRange; public class ProtocolSyncBooleanSetting extends AbstractSetting { - public final static int AUTO = 2; - public final static int ENABLED = 0; + public static final int AUTO = 2; + public static final int ENABLED = 0; private final VersionRange protocolRange; diff --git a/src/main/java/de/florianmichael/viafabricplus/util/ChatUtil.java b/src/main/java/de/florianmichael/viafabricplus/util/ChatUtil.java index 2af7f9c5..02605f41 100644 --- a/src/main/java/de/florianmichael/viafabricplus/util/ChatUtil.java +++ b/src/main/java/de/florianmichael/viafabricplus/util/ChatUtil.java @@ -24,8 +24,8 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; public class ChatUtil { - public final static String PREFIX = Formatting.WHITE + "[" + Formatting.GOLD + "ViaFabricPlus" + Formatting.WHITE + "]"; - public final static Text PREFIX_TEXT = Text.literal("[").formatted(Formatting.WHITE).append(Text.literal("ViaFabricPlus").formatted(Formatting.GOLD)).append("]"); + public static final String PREFIX = Formatting.WHITE + "[" + Formatting.GOLD + "ViaFabricPlus" + Formatting.WHITE + "]"; + public static final Text PREFIX_TEXT = Text.literal("[").formatted(Formatting.WHITE).append(Text.literal("ViaFabricPlus").formatted(Formatting.GOLD)).append("]"); public static Text prefixText(final String message) { return prefixText(Text.literal(message)); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index d217deda..50beba01 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -21,6 +21,7 @@ } ], "contributors": [ + "allinkdev", { "name": "GitHub contributors", "contact": { diff --git a/src/main/resources/viafabricplus.mixins.json b/src/main/resources/viafabricplus.mixins.json index f645f46c..0292531c 100644 --- a/src/main/resources/viafabricplus.mixins.json +++ b/src/main/resources/viafabricplus.mixins.json @@ -3,26 +3,27 @@ "minVersion": "0.8", "package": "de.florianmichael.viafabricplus.injection.mixin", "compatibilityLevel": "JAVA_17", - "plugin": "de.florianmichael.viafabricplus.injection.MixinPlugin", + "plugin": "de.florianmichael.viafabricplus.injection.VFPMixinPlugin", "client": [ - "base.MixinAddServerScreen", - "base.MixinClientConnection", - "base.MixinClientConnection_1", - "base.MixinClientLoginNetworkHandler", - "base.MixinConnectScreen_1", - "base.MixinDebugHud", - "base.MixinDownloadingTerrainScreenAndConnectScreen", "base.MixinMain", - "base.MixinMinecraftClient", - "base.MixinMultiplayerScreen", - "base.MixinMultiplayerServerListPinger", - "base.MixinMultiplayerServerListPinger_1", - "base.MixinMultiplayerServerListWidget_ServerEntry", - "base.MixinOptionsScreen", - "base.MixinServerInfo", - "base.MixinTextFieldWidget", - "classic4j.MixinCCAuthenticationResponse", + "base.connect.MixinClientConnection", + "base.connect.MixinClientConnection_1", + "base.connect.MixinClientLoginNetworkHandler", + "base.integration.MixinAddServerScreen", + "base.integration.MixinDebugHud", + "base.integration.MixinDownloadingTerrainScreenAndConnectScreen", + "base.integration.MixinMinecraftClient", + "base.integration.MixinMultiplayerScreen", + "base.integration.MixinMultiplayerServerListPinger_1", + "base.integration.MixinMultiplayerServerListWidget_ServerEntry", + "base.per_server_version.MixinConnectScreen_1", + "base.per_server_version.MixinMultiplayerServerListPinger", + "base.per_server_version.MixinServerInfo", + "compat.classic4j.MixinCCAuthenticationResponse", + "compat.classic4j.MixinTextFieldWidget", "compat.ipnext.MixinAutoRefillHandler_ItemSlotMonitor", + "compat.jsonwebtoken.MixinClasses", + "compat.jsonwebtoken.MixinDefaultJwtParserBuilder", "fixes.authlib.MixinKeyPairResponse", "fixes.authlib.MixinYggdrasilUserApiService", "fixes.minecraft.MixinClientPlayerInteractionManager", @@ -120,6 +121,7 @@ "fixes.minecraft.screen.MixinGameModeSelectionScreen_GameModeSelection", "fixes.minecraft.screen.MixinHandledScreens", "fixes.minecraft.screen.MixinJigsawBlockScreen", + "fixes.minecraft.screen.MixinOptionsScreen", "fixes.minecraft.screen.MixinScreen", "fixes.minecraft.screen.MixinStructureBlockScreen_1", "fixes.minecraft.screen.hud.MixinChatHud", @@ -157,8 +159,6 @@ "fixes.viaversion.MixinWorldPackets1_16_2", "fixes.viaversion.MixinWorldPackets1_17", "fixes.viaversion.MixinWorldPackets1_19", - "jsonwebtoken.MixinClasses", - "jsonwebtoken.MixinDefaultJwtParserBuilder", "viaversion.MixinAbstractFenceConnectionHandler", "viaversion.MixinGlassConnectionHandler", "viaversion.MixinProtocolVersion" @@ -167,8 +167,9 @@ "defaultRequire": 1 }, "mixins": [ - "base.MixinPerformanceLog", + "base.per_server_version.MixinPerformanceLog", "fixes.minecraft.block.MixinCarpetBlock", + "fixes.minecraft.block.MixinEnderChestBlock", "fixes.minecraft.block.MixinFenceGateBlock", "fixes.minecraft.block.MixinLeavesBlock", "fixes.minecraft.block.MixinNoteBlock",