Skip to content

Commit

Permalink
Sync tags again after syncing registries (#690)
Browse files Browse the repository at this point in the history
  • Loading branch information
embeddedt committed Mar 6, 2024
1 parent 231a786 commit 2d5ba40
Showing 1 changed file with 13 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,16 @@
package net.neoforged.neoforge.network.configuration;

import java.util.function.Consumer;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.common.ClientboundUpdateTagsPacket;
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagNetworkSerialization;
import net.neoforged.neoforge.internal.versions.neoforge.NeoForgeVersion;
import net.neoforged.neoforge.network.payload.FrozenRegistrySyncCompletedPayload;
import net.neoforged.neoforge.network.payload.FrozenRegistrySyncStartPayload;
import net.neoforged.neoforge.registries.RegistryManager;
import net.neoforged.neoforge.server.ServerLifecycleHooks;
import org.jetbrains.annotations.ApiStatus;

/**
Expand All @@ -29,6 +33,15 @@ public void run(Consumer<CustomPacketPayload> sender) {
sender.accept(new FrozenRegistrySyncCompletedPayload());
}

@Override
public void start(Consumer<Packet<?>> sender) {
ICustomConfigurationTask.super.start(sender);
// Sync tags a second time. This is needed in 20.4 because tags use integer IDs for syncing, and we do the
// registry sync after vanilla sends the tags packet.
// TODO remove in 20.5, where this is fixed properly
sender.accept(new ClientboundUpdateTagsPacket(TagNetworkSerialization.serializeTagsToNetwork(ServerLifecycleHooks.getCurrentServer().registries())));
}

@Override
public Type type() {
return TYPE;
Expand Down

0 comments on commit 2d5ba40

Please sign in to comment.