Skip to content

Commit 83d4097

Browse files
Features loading
1 parent 3a84529 commit 83d4097

File tree

14 files changed

+84
-75
lines changed

14 files changed

+84
-75
lines changed

src/main/java/com/viaversion/viafabricplus/ViaFabricPlusImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.viaversion.viafabricplus.base.Events;
2828
import com.viaversion.viafabricplus.base.save.SaveManager;
2929
import com.viaversion.viafabricplus.base.settings.SettingsManager;
30+
import com.viaversion.viafabricplus.features.FeaturesLoading;
3031
import com.viaversion.viafabricplus.features.max_chat_length.MaxChatLength;
3132
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
3233
import com.viaversion.viafabricplus.util.ClassLoaderPriorityUtil;
@@ -102,6 +103,9 @@ private ViaFabricPlusImpl() {
102103
settingsManager = new SettingsManager();
103104
saveManager = new SaveManager(settingsManager);
104105

106+
// Init features
107+
FeaturesLoading.init();
108+
105109
// Init ViaVersion protocol translator platform
106110
loadingFuture = ProtocolTranslator.init(path);
107111

src/main/java/com/viaversion/viafabricplus/old/ClientsideFeatures.java renamed to src/main/java/com/viaversion/viafabricplus/features/FeaturesLoading.java

Lines changed: 20 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -19,99 +19,58 @@
1919
* along with this program. If not, see <http://www.gnu.org/licenses/>.
2020
*/
2121

22-
package com.viaversion.viafabricplus.old;
22+
package com.viaversion.viafabricplus.features;
2323

2424
import com.viaversion.viafabricplus.api.LoadingCycleCallback;
2525
import com.viaversion.viafabricplus.base.Events;
26-
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
27-
import com.viaversion.viafabricplus.old.data.EntityDimensionDiff;
28-
import com.viaversion.viafabricplus.features.networking.resource_pack_header.ResourcePackHeaderDiff;
29-
import com.viaversion.viafabricplus.features.recipe_emulation.Recipes1_11_2;
30-
import com.viaversion.viafabricplus.old.versioned.EnchantmentAttributesEmulation1_20_6;
26+
import com.viaversion.viafabricplus.base.settings.impl.VisualSettings;
27+
import com.viaversion.viafabricplus.features.block.CollisionShapes;
3128
import com.viaversion.viafabricplus.features.cpe_extensions.CPEAdditions;
32-
import com.viaversion.viafabricplus.features.ui.classic_creative_menu.GridItemSelectionScreen;
33-
import com.viaversion.viafabricplus.features.ui.armor_hud.ArmorHudEmulation1_8;
3429
import com.viaversion.viafabricplus.features.footstep_particle.FootStepParticle1_12_2;
30+
import com.viaversion.viafabricplus.features.networking.resource_pack_header.ResourcePackHeaderDiff;
31+
import com.viaversion.viafabricplus.features.recipe_emulation.Recipes1_11_2;
3532
import com.viaversion.viafabricplus.features.text_rendering.non_existing_characters.UnicodeFontFix1_12_2;
36-
import com.viaversion.viafabricplus.base.settings.impl.VisualSettings;
33+
import com.viaversion.viafabricplus.features.ui.armor_hud.ArmorHudEmulation1_8;
34+
import com.viaversion.viafabricplus.features.ui.classic_creative_menu.GridItemSelectionScreen;
35+
import com.viaversion.viafabricplus.old.data.EntityDimensionDiff;
36+
import com.viaversion.viafabricplus.old.versioned.EnchantmentAttributesEmulation1_20_6;
3737
import com.viaversion.viafabricplus.util.DataCustomPayload;
38-
import net.minecraft.block.*;
38+
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
3939
import net.minecraft.client.MinecraftClient;
40-
import net.minecraft.registry.Registries;
4140
import net.raphimc.viaaprilfools.api.AprilFoolsProtocolVersion;
4241
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
4342

44-
/**
45-
* This class contains random fields and methods that are used to fix bugs on the client side
46-
*/
47-
public class ClientsideFeatures {
43+
public class FeaturesLoading {
4844

4945
static {
50-
// Register additional CPE features
51-
CPEAdditions.modifyMappings();
52-
53-
// Check if the pack format mappings are correct
54-
ResourcePackHeaderDiff.checkOutdated();
55-
46+
ResourcePackHeaderDiff.init();
47+
CPEAdditions.init();
48+
DataCustomPayload.init();
5649
UnicodeFontFix1_12_2.init();
50+
FootStepParticle1_12_2.init();
5751

5852
Events.LOADING_CYCLE.register(cycle -> {
59-
if (cycle != LoadingCycleCallback.LoadingCycle.POST_GAME_LOAD) {
60-
return;
53+
if (cycle == LoadingCycleCallback.LoadingCycle.POST_GAME_LOAD) {
54+
EntityDimensionDiff.init();
55+
EnchantmentAttributesEmulation1_20_6.init();
56+
ArmorHudEmulation1_8.init();
6157
}
62-
63-
// Handle clientside enchantment calculations in <= 1.20.6
64-
EnchantmentAttributesEmulation1_20_6.init();
65-
66-
// Handles and updates entity dimension changes in <= 1.17
67-
EntityDimensionDiff.init();
68-
69-
// Ticks the armor hud manually in <= 1.8.x
70-
ArmorHudEmulation1_8.init();
7158
});
7259

73-
// Reloads some clientside stuff when the protocol version changes
7460
Events.CHANGE_PROTOCOL_VERSION.register((oldVersion, newVersion) -> MinecraftClient.getInstance().execute(() -> {
7561
VisualSettings.global().filterNonExistingGlyphs.onValueChanged();
62+
CollisionShapes.reloadBlockShapes();
7663

77-
// Reloads all bounding boxes of the blocks that we changed
78-
for (Block block : Registries.BLOCK) {
79-
if (block instanceof AnvilBlock || block instanceof BedBlock || block instanceof BrewingStandBlock
80-
|| block instanceof CarpetBlock || block instanceof CauldronBlock || block instanceof ChestBlock
81-
|| block instanceof EnderChestBlock || block instanceof EndPortalBlock || block instanceof EndPortalFrameBlock
82-
|| block instanceof FarmlandBlock || block instanceof FenceBlock || block instanceof FenceGateBlock
83-
|| block instanceof HopperBlock || block instanceof LadderBlock || block instanceof LeavesBlock
84-
|| block instanceof LilyPadBlock || block instanceof PaneBlock || block instanceof PistonBlock
85-
|| block instanceof PistonHeadBlock || block instanceof SnowBlock || block instanceof WallBlock
86-
|| block instanceof CropBlock || block instanceof FlowerbedBlock
87-
) {
88-
for (BlockState state : block.getStateManager().getStates()) {
89-
state.initShapeCache();
90-
}
91-
}
92-
}
93-
94-
// Rebuilds the item selection screen grid
9564
if (newVersion.olderThanOrEqualTo(LegacyProtocolVersion.c0_28toc0_30)) {
9665
GridItemSelectionScreen.INSTANCE.itemGrid = null;
9766
}
98-
99-
// Reloads the clientside recipes
10067
if (newVersion.olderThanOrEqualTo(ProtocolVersion.v1_11_1)) {
10168
Recipes1_11_2.reset();
10269
}
103-
104-
// Reload sound system when switching between 3D Shareware and normal versions
10570
if (oldVersion.equals(AprilFoolsProtocolVersion.s3d_shareware) || newVersion.equals(AprilFoolsProtocolVersion.s3d_shareware)) {
10671
MinecraftClient.getInstance().getSoundManager().reloadSounds();
10772
}
10873
}));
109-
110-
// Register the footstep particle
111-
FootStepParticle1_12_2.init();
112-
113-
// Register the custom payload packet for sync tasks
114-
DataCustomPayload.init();
11574
}
11675

11776
public static void init() {
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* This file is part of ViaFabricPlus - https://github.com/ViaVersion/ViaFabricPlus
3+
* Copyright (C) 2021-2024 the original authors
4+
* - FlorianMichael/EnZaXD <[email protected]>
5+
* - RK_01/RaphiMC
6+
* Copyright (C) 2023-2024 ViaVersion and contributors
7+
*
8+
* This program is free software: you can redistribute it and/or modify
9+
* it under the terms of the GNU General Public License as published by
10+
* the Free Software Foundation, either version 3 of the License, or
11+
* (at your option) any later version.
12+
*
13+
* This program is distributed in the hope that it will be useful,
14+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16+
* GNU General Public License for more details.
17+
*
18+
* You should have received a copy of the GNU General Public License
19+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
20+
*/
21+
22+
package com.viaversion.viafabricplus.features.block;
23+
24+
import net.minecraft.block.*;
25+
import net.minecraft.registry.Registries;
26+
27+
public final class CollisionShapes {
28+
29+
public static void reloadBlockShapes() {
30+
for (Block block : Registries.BLOCK) {
31+
if (block instanceof AnvilBlock || block instanceof BedBlock || block instanceof BrewingStandBlock
32+
|| block instanceof CarpetBlock || block instanceof CauldronBlock || block instanceof ChestBlock
33+
|| block instanceof EnderChestBlock || block instanceof EndPortalBlock || block instanceof EndPortalFrameBlock
34+
|| block instanceof FarmlandBlock || block instanceof FenceBlock || block instanceof FenceGateBlock
35+
|| block instanceof HopperBlock || block instanceof LadderBlock || block instanceof LeavesBlock
36+
|| block instanceof LilyPadBlock || block instanceof PaneBlock || block instanceof PistonBlock
37+
|| block instanceof PistonHeadBlock || block instanceof SnowBlock || block instanceof WallBlock
38+
|| block instanceof CropBlock || block instanceof FlowerbedBlock
39+
) {
40+
for (BlockState state : block.getStateManager().getStates()) {
41+
state.initShapeCache();
42+
}
43+
}
44+
}
45+
}
46+
47+
}

src/main/java/com/viaversion/viafabricplus/features/cpe_extensions/CPEAdditions.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
2929
import net.raphimc.vialegacy.protocol.classic.c0_30cpetoc0_28_30.data.ClassicProtocolExtension;
3030
import net.raphimc.vialegacy.protocol.classic.c0_30cpetoc0_28_30.packet.ClientboundPacketsc0_30cpe;
31-
import org.jetbrains.annotations.ApiStatus;
3231

3332
import java.util.ArrayList;
3433
import java.util.HashMap;
@@ -45,7 +44,7 @@ public class CPEAdditions {
4544

4645
private static boolean snowing = false;
4746

48-
public static void modifyMappings() {
47+
public static void init() {
4948
allowExtension(ClassicProtocolExtension.ENV_WEATHER_TYPE);
5049
EXT_WEATHER_TYPE = createNewPacket(ClassicProtocolExtension.ENV_WEATHER_TYPE, 31, (user, buf) -> buf.readByte());
5150
}

src/main/java/com/viaversion/viafabricplus/old/versioned/visual/BoatModel1_8.java renamed to src/main/java/com/viaversion/viafabricplus/features/entity/v1_8_boat/BoatModel1_8.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* along with this program. If not, see <http://www.gnu.org/licenses/>.
2020
*/
2121

22-
package com.viaversion.viafabricplus.old.versioned.visual;
22+
package com.viaversion.viafabricplus.features.entity.v1_8_boat;
2323

2424
import net.minecraft.client.model.*;
2525
import net.minecraft.client.render.entity.model.EntityModel;

src/main/java/com/viaversion/viafabricplus/old/versioned/visual/BoatRenderer1_8.java renamed to src/main/java/com/viaversion/viafabricplus/features/entity/v1_8_boat/BoatRenderer1_8.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* along with this program. If not, see <http://www.gnu.org/licenses/>.
2020
*/
2121

22-
package com.viaversion.viafabricplus.old.versioned.visual;
22+
package com.viaversion.viafabricplus.features.entity.v1_8_boat;
2323

2424
import net.minecraft.client.render.OverlayTexture;
2525
import net.minecraft.client.render.RenderLayer;

src/main/java/com/viaversion/viafabricplus/old/versioned/ActionResultException1_12_2.java renamed to src/main/java/com/viaversion/viafabricplus/features/interaction/ActionResultException1_12_2.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
* along with this program. If not, see <http://www.gnu.org/licenses/>.
2020
*/
2121

22-
package com.viaversion.viafabricplus.old.versioned;
22+
package com.viaversion.viafabricplus.features.interaction;
2323

2424
import net.minecraft.util.ActionResult;
2525

src/main/java/com/viaversion/viafabricplus/features/networking/resource_pack_header/ResourcePackHeaderDiff.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import net.minecraft.SaveVersion;
2828
import net.minecraft.SharedConstants;
2929
import net.minecraft.resource.ResourceType;
30-
import org.jetbrains.annotations.ApiStatus;
3130

3231
import java.util.Date;
3332
import java.util.HashMap;
@@ -87,10 +86,11 @@ public class ResourcePackHeaderDiff {
8786
registerVersion(ProtocolVersion.v1_7_2, 1, "1.7.5");
8887
}
8988

90-
public static void checkOutdated() {
89+
public static void init() {
9190
if (!GAME_VERSION_DIFF.containsKey(ProtocolTranslator.NATIVE_VERSION)) {
9291
throw new RuntimeException("The native client version is not registered in the resource pack header diff!");
9392
}
93+
// Also calls the static block
9494
}
9595

9696
/**

src/main/java/com/viaversion/viafabricplus/injection/mixin/features/entity/v1_8_boat/MixinEntityModels.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
package com.viaversion.viafabricplus.injection.mixin.features.entity.v1_8_boat;
2323

2424
import com.google.common.collect.ImmutableMap;
25-
import com.viaversion.viafabricplus.old.versioned.visual.BoatModel1_8;
25+
import com.viaversion.viafabricplus.features.entity.v1_8_boat.BoatModel1_8;
2626
import net.minecraft.client.model.TexturedModelData;
2727
import net.minecraft.client.render.entity.model.EntityModelLayer;
2828
import net.minecraft.client.render.entity.model.EntityModels;

src/main/java/com/viaversion/viafabricplus/injection/mixin/features/entity/v1_8_boat/MixinEntityRenderDispatcher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
import com.llamalad7.mixinextras.sugar.Local;
2525
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
26-
import com.viaversion.viafabricplus.old.versioned.visual.BoatRenderer1_8;
26+
import com.viaversion.viafabricplus.features.entity.v1_8_boat.BoatRenderer1_8;
2727
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
2828
import net.minecraft.client.render.entity.EntityRenderDispatcher;
2929
import net.minecraft.client.render.entity.EntityRenderer;

0 commit comments

Comments
 (0)