From 83d4097a314c20eeedefc6ac2375432a36174eff Mon Sep 17 00:00:00 2001 From: FlorianMichael Date: Mon, 23 Dec 2024 20:26:31 +0100 Subject: [PATCH] Features loading --- .../viafabricplus/ViaFabricPlusImpl.java | 4 + .../FeaturesLoading.java} | 81 +++++-------------- .../features/block/CollisionShapes.java | 47 +++++++++++ .../features/cpe_extensions/CPEAdditions.java | 3 +- .../entity/v1_8_boat}/BoatModel1_8.java | 2 +- .../entity/v1_8_boat}/BoatRenderer1_8.java | 2 +- .../ActionResultException1_12_2.java | 2 +- .../ResourcePackHeaderDiff.java | 4 +- .../entity/v1_8_boat/MixinEntityModels.java | 2 +- .../MixinEntityRenderDispatcher.java | 2 +- .../MixinClientPlayerInteractionManager.java | 2 +- .../ViaFabricPlusVLCommandHandler.java | 4 +- .../classic}/ListExtensionsCommand.java | 2 +- .../impl/command/classic}/SetTimeCommand.java | 2 +- 14 files changed, 84 insertions(+), 75 deletions(-) rename src/main/java/com/viaversion/viafabricplus/{old/ClientsideFeatures.java => features/FeaturesLoading.java} (56%) create mode 100644 src/main/java/com/viaversion/viafabricplus/features/block/CollisionShapes.java rename src/main/java/com/viaversion/viafabricplus/{old/versioned/visual => features/entity/v1_8_boat}/BoatModel1_8.java (97%) rename src/main/java/com/viaversion/viafabricplus/{old/versioned/visual => features/entity/v1_8_boat}/BoatRenderer1_8.java (97%) rename src/main/java/com/viaversion/viafabricplus/{old/versioned => features/interaction}/ActionResultException1_12_2.java (96%) rename src/main/java/com/viaversion/viafabricplus/{old/versioned/classic/command => protocoltranslator/impl/command/classic}/ListExtensionsCommand.java (96%) rename src/main/java/com/viaversion/viafabricplus/{old/versioned/classic/command => protocoltranslator/impl/command/classic}/SetTimeCommand.java (96%) diff --git a/src/main/java/com/viaversion/viafabricplus/ViaFabricPlusImpl.java b/src/main/java/com/viaversion/viafabricplus/ViaFabricPlusImpl.java index 002b8baff..ba0f40ff8 100644 --- a/src/main/java/com/viaversion/viafabricplus/ViaFabricPlusImpl.java +++ b/src/main/java/com/viaversion/viafabricplus/ViaFabricPlusImpl.java @@ -27,6 +27,7 @@ import com.viaversion.viafabricplus.base.Events; import com.viaversion.viafabricplus.base.save.SaveManager; import com.viaversion.viafabricplus.base.settings.SettingsManager; +import com.viaversion.viafabricplus.features.FeaturesLoading; import com.viaversion.viafabricplus.features.max_chat_length.MaxChatLength; import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator; import com.viaversion.viafabricplus.util.ClassLoaderPriorityUtil; @@ -102,6 +103,9 @@ private ViaFabricPlusImpl() { settingsManager = new SettingsManager(); saveManager = new SaveManager(settingsManager); + // Init features + FeaturesLoading.init(); + // Init ViaVersion protocol translator platform loadingFuture = ProtocolTranslator.init(path); diff --git a/src/main/java/com/viaversion/viafabricplus/old/ClientsideFeatures.java b/src/main/java/com/viaversion/viafabricplus/features/FeaturesLoading.java similarity index 56% rename from src/main/java/com/viaversion/viafabricplus/old/ClientsideFeatures.java rename to src/main/java/com/viaversion/viafabricplus/features/FeaturesLoading.java index 605a0ed58..ace9463ca 100644 --- a/src/main/java/com/viaversion/viafabricplus/old/ClientsideFeatures.java +++ b/src/main/java/com/viaversion/viafabricplus/features/FeaturesLoading.java @@ -19,99 +19,58 @@ * along with this program. If not, see . */ -package com.viaversion.viafabricplus.old; +package com.viaversion.viafabricplus.features; import com.viaversion.viafabricplus.api.LoadingCycleCallback; import com.viaversion.viafabricplus.base.Events; -import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; -import com.viaversion.viafabricplus.old.data.EntityDimensionDiff; -import com.viaversion.viafabricplus.features.networking.resource_pack_header.ResourcePackHeaderDiff; -import com.viaversion.viafabricplus.features.recipe_emulation.Recipes1_11_2; -import com.viaversion.viafabricplus.old.versioned.EnchantmentAttributesEmulation1_20_6; +import com.viaversion.viafabricplus.base.settings.impl.VisualSettings; +import com.viaversion.viafabricplus.features.block.CollisionShapes; import com.viaversion.viafabricplus.features.cpe_extensions.CPEAdditions; -import com.viaversion.viafabricplus.features.ui.classic_creative_menu.GridItemSelectionScreen; -import com.viaversion.viafabricplus.features.ui.armor_hud.ArmorHudEmulation1_8; import com.viaversion.viafabricplus.features.footstep_particle.FootStepParticle1_12_2; +import com.viaversion.viafabricplus.features.networking.resource_pack_header.ResourcePackHeaderDiff; +import com.viaversion.viafabricplus.features.recipe_emulation.Recipes1_11_2; import com.viaversion.viafabricplus.features.text_rendering.non_existing_characters.UnicodeFontFix1_12_2; -import com.viaversion.viafabricplus.base.settings.impl.VisualSettings; +import com.viaversion.viafabricplus.features.ui.armor_hud.ArmorHudEmulation1_8; +import com.viaversion.viafabricplus.features.ui.classic_creative_menu.GridItemSelectionScreen; +import com.viaversion.viafabricplus.old.data.EntityDimensionDiff; +import com.viaversion.viafabricplus.old.versioned.EnchantmentAttributesEmulation1_20_6; import com.viaversion.viafabricplus.util.DataCustomPayload; -import net.minecraft.block.*; +import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; import net.minecraft.client.MinecraftClient; -import net.minecraft.registry.Registries; import net.raphimc.viaaprilfools.api.AprilFoolsProtocolVersion; import net.raphimc.vialegacy.api.LegacyProtocolVersion; -/** - * This class contains random fields and methods that are used to fix bugs on the client side - */ -public class ClientsideFeatures { +public class FeaturesLoading { static { - // Register additional CPE features - CPEAdditions.modifyMappings(); - - // Check if the pack format mappings are correct - ResourcePackHeaderDiff.checkOutdated(); - + ResourcePackHeaderDiff.init(); + CPEAdditions.init(); + DataCustomPayload.init(); UnicodeFontFix1_12_2.init(); + FootStepParticle1_12_2.init(); Events.LOADING_CYCLE.register(cycle -> { - if (cycle != LoadingCycleCallback.LoadingCycle.POST_GAME_LOAD) { - return; + if (cycle == LoadingCycleCallback.LoadingCycle.POST_GAME_LOAD) { + EntityDimensionDiff.init(); + EnchantmentAttributesEmulation1_20_6.init(); + ArmorHudEmulation1_8.init(); } - - // Handle clientside enchantment calculations in <= 1.20.6 - EnchantmentAttributesEmulation1_20_6.init(); - - // Handles and updates entity dimension changes in <= 1.17 - EntityDimensionDiff.init(); - - // Ticks the armor hud manually in <= 1.8.x - ArmorHudEmulation1_8.init(); }); - // Reloads some clientside stuff when the protocol version changes Events.CHANGE_PROTOCOL_VERSION.register((oldVersion, newVersion) -> MinecraftClient.getInstance().execute(() -> { VisualSettings.global().filterNonExistingGlyphs.onValueChanged(); + CollisionShapes.reloadBlockShapes(); - // Reloads all bounding boxes of the blocks that we changed - for (Block block : Registries.BLOCK) { - if (block instanceof AnvilBlock || block instanceof BedBlock || block instanceof BrewingStandBlock - || block instanceof CarpetBlock || block instanceof CauldronBlock || block instanceof ChestBlock - || block instanceof EnderChestBlock || block instanceof EndPortalBlock || block instanceof EndPortalFrameBlock - || block instanceof FarmlandBlock || block instanceof FenceBlock || block instanceof FenceGateBlock - || block instanceof HopperBlock || block instanceof LadderBlock || block instanceof LeavesBlock - || block instanceof LilyPadBlock || block instanceof PaneBlock || block instanceof PistonBlock - || block instanceof PistonHeadBlock || block instanceof SnowBlock || block instanceof WallBlock - || block instanceof CropBlock || block instanceof FlowerbedBlock - ) { - for (BlockState state : block.getStateManager().getStates()) { - state.initShapeCache(); - } - } - } - - // Rebuilds the item selection screen grid if (newVersion.olderThanOrEqualTo(LegacyProtocolVersion.c0_28toc0_30)) { GridItemSelectionScreen.INSTANCE.itemGrid = null; } - - // Reloads the clientside recipes if (newVersion.olderThanOrEqualTo(ProtocolVersion.v1_11_1)) { Recipes1_11_2.reset(); } - - // Reload sound system when switching between 3D Shareware and normal versions if (oldVersion.equals(AprilFoolsProtocolVersion.s3d_shareware) || newVersion.equals(AprilFoolsProtocolVersion.s3d_shareware)) { MinecraftClient.getInstance().getSoundManager().reloadSounds(); } })); - - // Register the footstep particle - FootStepParticle1_12_2.init(); - - // Register the custom payload packet for sync tasks - DataCustomPayload.init(); } public static void init() { diff --git a/src/main/java/com/viaversion/viafabricplus/features/block/CollisionShapes.java b/src/main/java/com/viaversion/viafabricplus/features/block/CollisionShapes.java new file mode 100644 index 000000000..0601ce174 --- /dev/null +++ b/src/main/java/com/viaversion/viafabricplus/features/block/CollisionShapes.java @@ -0,0 +1,47 @@ +/* + * This file is part of ViaFabricPlus - https://github.com/ViaVersion/ViaFabricPlus + * Copyright (C) 2021-2024 the original authors + * - FlorianMichael/EnZaXD + * - RK_01/RaphiMC + * Copyright (C) 2023-2024 ViaVersion 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 com.viaversion.viafabricplus.features.block; + +import net.minecraft.block.*; +import net.minecraft.registry.Registries; + +public final class CollisionShapes { + + public static void reloadBlockShapes() { + for (Block block : Registries.BLOCK) { + if (block instanceof AnvilBlock || block instanceof BedBlock || block instanceof BrewingStandBlock + || block instanceof CarpetBlock || block instanceof CauldronBlock || block instanceof ChestBlock + || block instanceof EnderChestBlock || block instanceof EndPortalBlock || block instanceof EndPortalFrameBlock + || block instanceof FarmlandBlock || block instanceof FenceBlock || block instanceof FenceGateBlock + || block instanceof HopperBlock || block instanceof LadderBlock || block instanceof LeavesBlock + || block instanceof LilyPadBlock || block instanceof PaneBlock || block instanceof PistonBlock + || block instanceof PistonHeadBlock || block instanceof SnowBlock || block instanceof WallBlock + || block instanceof CropBlock || block instanceof FlowerbedBlock + ) { + for (BlockState state : block.getStateManager().getStates()) { + state.initShapeCache(); + } + } + } + } + +} diff --git a/src/main/java/com/viaversion/viafabricplus/features/cpe_extensions/CPEAdditions.java b/src/main/java/com/viaversion/viafabricplus/features/cpe_extensions/CPEAdditions.java index 73721456d..cc558bb6a 100644 --- a/src/main/java/com/viaversion/viafabricplus/features/cpe_extensions/CPEAdditions.java +++ b/src/main/java/com/viaversion/viafabricplus/features/cpe_extensions/CPEAdditions.java @@ -28,7 +28,6 @@ import net.raphimc.vialegacy.api.LegacyProtocolVersion; import net.raphimc.vialegacy.protocol.classic.c0_30cpetoc0_28_30.data.ClassicProtocolExtension; import net.raphimc.vialegacy.protocol.classic.c0_30cpetoc0_28_30.packet.ClientboundPacketsc0_30cpe; -import org.jetbrains.annotations.ApiStatus; import java.util.ArrayList; import java.util.HashMap; @@ -45,7 +44,7 @@ public class CPEAdditions { private static boolean snowing = false; - public static void modifyMappings() { + public static void init() { allowExtension(ClassicProtocolExtension.ENV_WEATHER_TYPE); EXT_WEATHER_TYPE = createNewPacket(ClassicProtocolExtension.ENV_WEATHER_TYPE, 31, (user, buf) -> buf.readByte()); } diff --git a/src/main/java/com/viaversion/viafabricplus/old/versioned/visual/BoatModel1_8.java b/src/main/java/com/viaversion/viafabricplus/features/entity/v1_8_boat/BoatModel1_8.java similarity index 97% rename from src/main/java/com/viaversion/viafabricplus/old/versioned/visual/BoatModel1_8.java rename to src/main/java/com/viaversion/viafabricplus/features/entity/v1_8_boat/BoatModel1_8.java index d11270aa2..33ea5ef68 100644 --- a/src/main/java/com/viaversion/viafabricplus/old/versioned/visual/BoatModel1_8.java +++ b/src/main/java/com/viaversion/viafabricplus/features/entity/v1_8_boat/BoatModel1_8.java @@ -19,7 +19,7 @@ * along with this program. If not, see . */ -package com.viaversion.viafabricplus.old.versioned.visual; +package com.viaversion.viafabricplus.features.entity.v1_8_boat; import net.minecraft.client.model.*; import net.minecraft.client.render.entity.model.EntityModel; diff --git a/src/main/java/com/viaversion/viafabricplus/old/versioned/visual/BoatRenderer1_8.java b/src/main/java/com/viaversion/viafabricplus/features/entity/v1_8_boat/BoatRenderer1_8.java similarity index 97% rename from src/main/java/com/viaversion/viafabricplus/old/versioned/visual/BoatRenderer1_8.java rename to src/main/java/com/viaversion/viafabricplus/features/entity/v1_8_boat/BoatRenderer1_8.java index a27e03c49..46995e90d 100644 --- a/src/main/java/com/viaversion/viafabricplus/old/versioned/visual/BoatRenderer1_8.java +++ b/src/main/java/com/viaversion/viafabricplus/features/entity/v1_8_boat/BoatRenderer1_8.java @@ -19,7 +19,7 @@ * along with this program. If not, see . */ -package com.viaversion.viafabricplus.old.versioned.visual; +package com.viaversion.viafabricplus.features.entity.v1_8_boat; import net.minecraft.client.render.OverlayTexture; import net.minecraft.client.render.RenderLayer; diff --git a/src/main/java/com/viaversion/viafabricplus/old/versioned/ActionResultException1_12_2.java b/src/main/java/com/viaversion/viafabricplus/features/interaction/ActionResultException1_12_2.java similarity index 96% rename from src/main/java/com/viaversion/viafabricplus/old/versioned/ActionResultException1_12_2.java rename to src/main/java/com/viaversion/viafabricplus/features/interaction/ActionResultException1_12_2.java index 8b83bc5f2..4f52769a4 100644 --- a/src/main/java/com/viaversion/viafabricplus/old/versioned/ActionResultException1_12_2.java +++ b/src/main/java/com/viaversion/viafabricplus/features/interaction/ActionResultException1_12_2.java @@ -19,7 +19,7 @@ * along with this program. If not, see . */ -package com.viaversion.viafabricplus.old.versioned; +package com.viaversion.viafabricplus.features.interaction; import net.minecraft.util.ActionResult; diff --git a/src/main/java/com/viaversion/viafabricplus/features/networking/resource_pack_header/ResourcePackHeaderDiff.java b/src/main/java/com/viaversion/viafabricplus/features/networking/resource_pack_header/ResourcePackHeaderDiff.java index c6f06a92e..607981673 100644 --- a/src/main/java/com/viaversion/viafabricplus/features/networking/resource_pack_header/ResourcePackHeaderDiff.java +++ b/src/main/java/com/viaversion/viafabricplus/features/networking/resource_pack_header/ResourcePackHeaderDiff.java @@ -27,7 +27,6 @@ import net.minecraft.SaveVersion; import net.minecraft.SharedConstants; import net.minecraft.resource.ResourceType; -import org.jetbrains.annotations.ApiStatus; import java.util.Date; import java.util.HashMap; @@ -87,10 +86,11 @@ public class ResourcePackHeaderDiff { registerVersion(ProtocolVersion.v1_7_2, 1, "1.7.5"); } - public static void checkOutdated() { + public static void init() { if (!GAME_VERSION_DIFF.containsKey(ProtocolTranslator.NATIVE_VERSION)) { throw new RuntimeException("The native client version is not registered in the resource pack header diff!"); } + // Also calls the static block } /** diff --git a/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/entity/v1_8_boat/MixinEntityModels.java b/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/entity/v1_8_boat/MixinEntityModels.java index d72055f17..084ca748b 100644 --- a/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/entity/v1_8_boat/MixinEntityModels.java +++ b/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/entity/v1_8_boat/MixinEntityModels.java @@ -22,7 +22,7 @@ package com.viaversion.viafabricplus.injection.mixin.features.entity.v1_8_boat; import com.google.common.collect.ImmutableMap; -import com.viaversion.viafabricplus.old.versioned.visual.BoatModel1_8; +import com.viaversion.viafabricplus.features.entity.v1_8_boat.BoatModel1_8; import net.minecraft.client.model.TexturedModelData; import net.minecraft.client.render.entity.model.EntityModelLayer; import net.minecraft.client.render.entity.model.EntityModels; diff --git a/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/entity/v1_8_boat/MixinEntityRenderDispatcher.java b/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/entity/v1_8_boat/MixinEntityRenderDispatcher.java index 3a393ed83..6fe6a03a9 100644 --- a/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/entity/v1_8_boat/MixinEntityRenderDispatcher.java +++ b/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/entity/v1_8_boat/MixinEntityRenderDispatcher.java @@ -23,7 +23,7 @@ import com.llamalad7.mixinextras.sugar.Local; import com.viaversion.viaversion.api.protocol.version.ProtocolVersion; -import com.viaversion.viafabricplus.old.versioned.visual.BoatRenderer1_8; +import com.viaversion.viafabricplus.features.entity.v1_8_boat.BoatRenderer1_8; import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator; import net.minecraft.client.render.entity.EntityRenderDispatcher; import net.minecraft.client.render.entity.EntityRenderer; diff --git a/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/interaction/MixinClientPlayerInteractionManager.java b/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/interaction/MixinClientPlayerInteractionManager.java index dd9d3bf82..4079635c6 100644 --- a/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/interaction/MixinClientPlayerInteractionManager.java +++ b/src/main/java/com/viaversion/viafabricplus/injection/mixin/features/interaction/MixinClientPlayerInteractionManager.java @@ -28,7 +28,7 @@ import com.viaversion.viaversion.api.type.Types; import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPackets1_16_2; import com.viaversion.viaversion.protocols.v1_16_4to1_17.Protocol1_16_4To1_17; -import com.viaversion.viafabricplus.old.versioned.ActionResultException1_12_2; +import com.viaversion.viafabricplus.features.interaction.ActionResultException1_12_2; import com.viaversion.viafabricplus.features.interaction.ClientPlayerInteractionManager1_18_2; import com.viaversion.viafabricplus.injection.access.IClientConnection; import com.viaversion.viafabricplus.injection.access.IClientPlayerInteractionManager; diff --git a/src/main/java/com/viaversion/viafabricplus/protocoltranslator/impl/command/ViaFabricPlusVLCommandHandler.java b/src/main/java/com/viaversion/viafabricplus/protocoltranslator/impl/command/ViaFabricPlusVLCommandHandler.java index db6600dfa..78bd24fdf 100644 --- a/src/main/java/com/viaversion/viafabricplus/protocoltranslator/impl/command/ViaFabricPlusVLCommandHandler.java +++ b/src/main/java/com/viaversion/viafabricplus/protocoltranslator/impl/command/ViaFabricPlusVLCommandHandler.java @@ -25,8 +25,8 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import com.viaversion.viafabricplus.old.versioned.classic.command.ListExtensionsCommand; -import com.viaversion.viafabricplus.old.versioned.classic.command.SetTimeCommand; +import com.viaversion.viafabricplus.protocoltranslator.impl.command.classic.ListExtensionsCommand; +import com.viaversion.viafabricplus.protocoltranslator.impl.command.classic.SetTimeCommand; import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource; import net.raphimc.vialoader.impl.viaversion.VLCommandHandler; diff --git a/src/main/java/com/viaversion/viafabricplus/old/versioned/classic/command/ListExtensionsCommand.java b/src/main/java/com/viaversion/viafabricplus/protocoltranslator/impl/command/classic/ListExtensionsCommand.java similarity index 96% rename from src/main/java/com/viaversion/viafabricplus/old/versioned/classic/command/ListExtensionsCommand.java rename to src/main/java/com/viaversion/viafabricplus/protocoltranslator/impl/command/classic/ListExtensionsCommand.java index 58a54ce59..84177cc62 100644 --- a/src/main/java/com/viaversion/viafabricplus/old/versioned/classic/command/ListExtensionsCommand.java +++ b/src/main/java/com/viaversion/viafabricplus/protocoltranslator/impl/command/classic/ListExtensionsCommand.java @@ -19,7 +19,7 @@ * along with this program. If not, see . */ -package com.viaversion.viafabricplus.old.versioned.classic.command; +package com.viaversion.viafabricplus.protocoltranslator.impl.command.classic; import com.viaversion.viaversion.api.command.ViaCommandSender; import com.viaversion.viafabricplus.injection.access.IExtensionProtocolMetadataStorage; diff --git a/src/main/java/com/viaversion/viafabricplus/old/versioned/classic/command/SetTimeCommand.java b/src/main/java/com/viaversion/viafabricplus/protocoltranslator/impl/command/classic/SetTimeCommand.java similarity index 96% rename from src/main/java/com/viaversion/viafabricplus/old/versioned/classic/command/SetTimeCommand.java rename to src/main/java/com/viaversion/viafabricplus/protocoltranslator/impl/command/classic/SetTimeCommand.java index e266a8b1e..8d2963c85 100644 --- a/src/main/java/com/viaversion/viafabricplus/old/versioned/classic/command/SetTimeCommand.java +++ b/src/main/java/com/viaversion/viafabricplus/protocoltranslator/impl/command/classic/SetTimeCommand.java @@ -19,7 +19,7 @@ * along with this program. If not, see . */ -package com.viaversion.viafabricplus.old.versioned.classic.command; +package com.viaversion.viafabricplus.protocoltranslator.impl.command.classic; import com.viaversion.viaversion.api.command.ViaCommandSender; import com.viaversion.viafabricplus.protocoltranslator.impl.command.VFPViaSubCommand;