Skip to content

Commit 2f8187c

Browse files
More work
1 parent 4a1d71f commit 2f8187c

File tree

90 files changed

+843
-353
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+843
-353
lines changed

src/main/java/com/viaversion/viafabricplus/util/DataCustomPayload.java renamed to src/main/java/com/viaversion/viafabricplus/base/DataCustomPayload.java

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

22-
package com.viaversion.viafabricplus.util;
22+
package com.viaversion.viafabricplus.base;
2323

24-
import com.viaversion.viafabricplus.features.ClientsideFeatures;
2524
import io.netty.buffer.Unpooled;
2625
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
2726
import net.minecraft.network.PacketByteBuf;
@@ -30,7 +29,7 @@
3029

3130
public record DataCustomPayload(PacketByteBuf buf) implements CustomPayload {
3231

33-
public static final CustomPayload.Id<DataCustomPayload> ID = new CustomPayload.Id<>(Identifier.of(ClientsideFeatures.PACKET_SYNC_IDENTIFIER));
32+
public static final CustomPayload.Id<DataCustomPayload> ID = new CustomPayload.Id<>(Identifier.of(SyncTasks.PACKET_SYNC_IDENTIFIER));
3433

3534
static {
3635
PayloadTypeRegistry.playS2C().register(DataCustomPayload.ID, CustomPayload.codecOf((value, buf) -> {
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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.base;
23+
24+
import net.minecraft.client.MinecraftClient;
25+
import net.minecraft.network.PacketByteBuf;
26+
import net.minecraft.network.RegistryByteBuf;
27+
28+
import java.util.Map;
29+
import java.util.UUID;
30+
import java.util.concurrent.ConcurrentHashMap;
31+
import java.util.function.Consumer;
32+
33+
public class SyncTasks {
34+
35+
/**
36+
* 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
37+
*/
38+
private static final Map<String, Consumer<RegistryByteBuf>> PENDING_EXECUTION_TASKS = new ConcurrentHashMap<>();
39+
40+
/**
41+
* This identifier is an internal identifier used to identify packets that are sent by ViaFabricPlus
42+
*/
43+
public static final String PACKET_SYNC_IDENTIFIER = UUID.randomUUID() + ":" + UUID.randomUUID();
44+
45+
/**
46+
* Executes a task synchronized with the main thread from networking threads
47+
*
48+
* @param task The task to execute
49+
* @return The uuid of the task
50+
*/
51+
public static String executeSyncTask(final Consumer<RegistryByteBuf> task) {
52+
final String uuid = UUID.randomUUID().toString();
53+
PENDING_EXECUTION_TASKS.put(uuid, task);
54+
return uuid;
55+
}
56+
57+
public static void handleSyncTask(final PacketByteBuf buf) {
58+
final String uuid = buf.readString();
59+
60+
if (PENDING_EXECUTION_TASKS.containsKey(uuid)) {
61+
MinecraftClient.getInstance().execute(() -> { // Execute the task on the main thread
62+
final Consumer<RegistryByteBuf> task = PENDING_EXECUTION_TASKS.remove(uuid);
63+
task.accept(new RegistryByteBuf(buf, MinecraftClient.getInstance().getNetworkHandler().getRegistryManager()));
64+
});
65+
}
66+
}
67+
68+
}

src/main/java/com/viaversion/viafabricplus/features/ClientsideFeatures.java

Lines changed: 5 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -25,61 +25,27 @@
2525
import com.viaversion.viafabricplus.event.ChangeProtocolVersionCallback;
2626
import com.viaversion.viafabricplus.event.PostGameLoadCallback;
2727
import com.viaversion.viafabricplus.features.data.EntityDimensionDiff;
28-
import com.viaversion.viafabricplus.features.data.ResourcePackHeaderDiff;
29-
import com.viaversion.viafabricplus.features.data.recipe.Recipes1_11_2;
28+
import com.viaversion.viafabricplus.features2.networking.resource_pack_header.ResourcePackHeaderDiff;
29+
import com.viaversion.viafabricplus.features2.recipe_emulation.Recipes1_11_2;
3030
import com.viaversion.viafabricplus.features.versioned.EnchantmentAttributesEmulation1_20_6;
3131
import com.viaversion.viafabricplus.features2.cpe_extensions.CPEAdditions;
32-
import com.viaversion.viafabricplus.features.versioned.classic.GridItemSelectionScreen;
32+
import com.viaversion.viafabricplus.features2.ui.classic_creative_menu.GridItemSelectionScreen;
3333
import com.viaversion.viafabricplus.features.versioned.visual.ArmorHudEmulation1_8;
3434
import com.viaversion.viafabricplus.features2.footstep_particle.FootStepParticle1_12_2;
35-
import com.viaversion.viafabricplus.features.versioned.visual.UnicodeFontFix1_12_2;
36-
import com.viaversion.viafabricplus.injection.access.IClientConnection;
37-
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;
38-
import com.viaversion.viafabricplus.settings.impl.BedrockSettings;
35+
import com.viaversion.viafabricplus.features2.text_rendering.non_existing_characters.UnicodeFontFix1_12_2;
3936
import com.viaversion.viafabricplus.settings.impl.VisualSettings;
40-
import com.viaversion.viafabricplus.util.DataCustomPayload;
37+
import com.viaversion.viafabricplus.base.DataCustomPayload;
4138
import net.minecraft.block.*;
4239
import net.minecraft.client.MinecraftClient;
43-
import net.minecraft.client.network.ClientPlayNetworkHandler;
44-
import net.minecraft.network.PacketByteBuf;
45-
import net.minecraft.network.RegistryByteBuf;
4640
import net.minecraft.registry.Registries;
4741
import net.raphimc.viaaprilfools.api.AprilFoolsProtocolVersion;
48-
import net.raphimc.viabedrock.api.BedrockProtocolVersion;
49-
import net.raphimc.viabedrock.protocol.data.ProtocolConstants;
5042
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
51-
import net.raphimc.vialegacy.protocol.classic.c0_30cpetoc0_28_30.data.ClassicProtocolExtension;
52-
import net.raphimc.vialegacy.protocol.classic.c0_30cpetoc0_28_30.storage.ExtensionProtocolMetadataStorage;
53-
import org.jetbrains.annotations.ApiStatus;
54-
55-
import java.util.Map;
56-
import java.util.Objects;
57-
import java.util.UUID;
58-
import java.util.concurrent.ConcurrentHashMap;
59-
import java.util.function.Consumer;
6043

6144
/**
6245
* This class contains random fields and methods that are used to fix bugs on the client side
6346
*/
6447
public class ClientsideFeatures {
6548

66-
/**
67-
* 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
68-
*/
69-
private static final Map<String, Consumer<RegistryByteBuf>> PENDING_EXECUTION_TASKS = new ConcurrentHashMap<>();
70-
71-
/**
72-
* This identifier is an internal identifier used to identify packets that are sent by ViaFabricPlus
73-
*/
74-
@ApiStatus.Internal
75-
public static final String PACKET_SYNC_IDENTIFIER = UUID.randomUUID() + ":" + UUID.randomUUID();
76-
77-
/**
78-
* This is an incremental index used for tablist entries to implement FIFO behavior <= 1.7
79-
*/
80-
@ApiStatus.Internal
81-
public static int globalTablistIndex = 0;
82-
8349
static {
8450
// Register additional CPE features
8551
CPEAdditions.modifyMappings();
@@ -148,45 +114,4 @@ public static void init() {
148114
// Calls the static block
149115
}
150116

151-
/**
152-
* Replaces the default port when parsing a server address if the default port should be replaced
153-
*
154-
* @param address The original address of the server
155-
* @param version The protocol version
156-
* @return The server address with the replaced default port
157-
*/
158-
public static String replaceDefaultPort(final String address, final ProtocolVersion version) {
159-
// If the default port for this entry should be replaced, check if the address already contains a port
160-
// We can't just replace vanilla's default port because a bedrock server might be running on the same port
161-
if (BedrockSettings.global().replaceDefaultPort.getValue() && Objects.equals(version, BedrockProtocolVersion.bedrockLatest) && !address.contains(":")) {
162-
return address + ":" + ProtocolConstants.BEDROCK_DEFAULT_PORT;
163-
} else {
164-
return address;
165-
}
166-
}
167-
168-
/**
169-
* Executes a task synchronized with the main thread from networking threads
170-
*
171-
* @param task The task to execute
172-
* @return The uuid of the task
173-
*/
174-
public static String executeSyncTask(final Consumer<RegistryByteBuf> task) {
175-
final String uuid = UUID.randomUUID().toString();
176-
PENDING_EXECUTION_TASKS.put(uuid, task);
177-
return uuid;
178-
}
179-
180-
@ApiStatus.Internal
181-
public static void handleSyncTask(final PacketByteBuf buf) {
182-
final String uuid = buf.readString();
183-
184-
if (PENDING_EXECUTION_TASKS.containsKey(uuid)) {
185-
MinecraftClient.getInstance().execute(() -> { // Execute the task on the main thread
186-
final Consumer<RegistryByteBuf> task = PENDING_EXECUTION_TASKS.remove(uuid);
187-
task.accept(new RegistryByteBuf(buf, MinecraftClient.getInstance().getNetworkHandler().getRegistryManager()));
188-
});
189-
}
190-
}
191-
192117
}

src/main/java/com/viaversion/viafabricplus/features/versioned/classic/WorldHeightSupport.java renamed to src/main/java/com/viaversion/viafabricplus/features2/classic_world_height/WorldHeightSupport.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.features.versioned.classic;
22+
package com.viaversion.viafabricplus.features2.classic_world_height;
2323

2424
import com.viaversion.nbt.tag.CompoundTag;
2525
import com.viaversion.viaversion.api.Via;

src/main/java/com/viaversion/viafabricplus/features/versioned/ClientPlayerInteractionManager1_18_2.java renamed to src/main/java/com/viaversion/viafabricplus/features2/interaction/ClientPlayerInteractionManager1_18_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.features.versioned;
22+
package com.viaversion.viafabricplus.features2.interaction;
2323

2424
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
2525
import com.viaversion.viafabricplus.ViaFabricPlus;

src/main/java/com/viaversion/viafabricplus/features/versioned/Enchantments1_14_4.java renamed to src/main/java/com/viaversion/viafabricplus/features2/item/tooltip_changes/Enchantments1_14_4.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.features.versioned;
22+
package com.viaversion.viafabricplus.features2.item.tooltip_changes;
2323

2424
import com.viaversion.viaversion.util.Key;
2525
import net.minecraft.enchantment.Enchantment;

src/main/java/com/viaversion/viafabricplus/features/data/ResourcePackHeaderDiff.java renamed to src/main/java/com/viaversion/viafabricplus/features2/networking/resource_pack_header/ResourcePackHeaderDiff.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.features.data;
22+
package com.viaversion.viafabricplus.features2.networking.resource_pack_header;
2323

2424
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
2525
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;

src/main/java/com/viaversion/viafabricplus/features/data/recipe/AddBannerPatternRecipe.java renamed to src/main/java/com/viaversion/viafabricplus/features2/recipe_emulation/AddBannerPatternRecipe.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.features.data.recipe;
22+
package com.viaversion.viafabricplus.features2.recipe_emulation;
2323

2424
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
2525
import com.viaversion.viafabricplus.protocoltranslator.ProtocolTranslator;

src/main/java/com/viaversion/viafabricplus/features/data/recipe/BannerPattern_1_13_2.java renamed to src/main/java/com/viaversion/viafabricplus/features2/recipe_emulation/BannerPattern_1_13_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.features.data.recipe;
22+
package com.viaversion.viafabricplus.features2.recipe_emulation;
2323

2424
import net.minecraft.block.Blocks;
2525
import net.minecraft.block.entity.BannerPattern;

src/main/java/com/viaversion/viafabricplus/features/data/recipe/RecipeInfo.java renamed to src/main/java/com/viaversion/viafabricplus/features2/recipe_emulation/RecipeInfo.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.features.data.recipe;
22+
package com.viaversion.viafabricplus.features2.recipe_emulation;
2323

2424
import net.minecraft.item.ItemConvertible;
2525
import net.minecraft.item.ItemStack;

0 commit comments

Comments
 (0)