SynchronizeRegistriesTask.java

net.minecraft.server.network.config.SynchronizeRegistriesTask

信息

  • 全限定名:net.minecraft.server.network.config.SynchronizeRegistriesTask
  • 类型:public class
  • 包:net.minecraft.server.network.config
  • 源码路径:src/main/java/net/minecraft/server/network/config/SynchronizeRegistriesTask.java
  • 起始行号:L20
  • 实现:ConfigurationTask
  • 职责:

    TODO

字段/常量

  • TYPE

    • 类型: ConfigurationTask.Type
    • 修饰符: public static final
    • 源码定位: L21
    • 说明:

      TODO

  • requestedPacks

    • 类型: List<KnownPack>
    • 修饰符: private final
    • 源码定位: L22
    • 说明:

      TODO

  • registries

    • 类型: LayeredRegistryAccess<RegistryLayer>
    • 修饰符: private final
    • 源码定位: L23
    • 说明:

      TODO

内部类/嵌套类型

构造器

public SynchronizeRegistriesTask(List<KnownPack> knownPacks, LayeredRegistryAccess<RegistryLayer> registries) @ L25

  • 构造器名:SynchronizeRegistriesTask
  • 源码定位:L25
  • 修饰符:public

参数:

  • knownPacks: List
  • registries: LayeredRegistryAccess

说明:

TODO

方法

下面的方法块按源码顺序生成。

public void start(Consumer<Packet<?>> connection) @ L30

  • 方法名:start
  • 源码定位:L30
  • 返回类型:void
  • 修饰符:public

参数:

  • connection: Consumer<Packet<?>>

说明:

TODO

private void sendRegistries(Consumer<Packet<?>> connection, Set<KnownPack> negotiatedPacks) @ L35

  • 方法名:sendRegistries
  • 源码定位:L35
  • 返回类型:void
  • 修饰符:private

参数:

  • connection: Consumer<Packet<?>>
  • negotiatedPacks: Set

说明:

TODO

public void handleResponse(List<KnownPack> acceptedPacks, Consumer<Packet<?>> connection) @ L46

  • 方法名:handleResponse
  • 源码定位:L46
  • 返回类型:void
  • 修饰符:public

参数:

  • acceptedPacks: List
  • connection: Consumer<Packet<?>>

说明:

TODO

public ConfigurationTask.Type type() @ L54

  • 方法名:type
  • 源码定位:L54
  • 返回类型:ConfigurationTask.Type
  • 修饰符:public

参数:

说明:

TODO

代码

public class SynchronizeRegistriesTask implements ConfigurationTask {
    public static final ConfigurationTask.Type TYPE = new ConfigurationTask.Type("synchronize_registries");
    private final List<KnownPack> requestedPacks;
    private final LayeredRegistryAccess<RegistryLayer> registries;
 
    public SynchronizeRegistriesTask(List<KnownPack> knownPacks, LayeredRegistryAccess<RegistryLayer> registries) {
        this.requestedPacks = knownPacks;
        this.registries = registries;
    }
 
    @Override
    public void start(Consumer<Packet<?>> connection) {
        connection.accept(new ClientboundSelectKnownPacks(this.requestedPacks));
    }
 
    private void sendRegistries(Consumer<Packet<?>> connection, Set<KnownPack> negotiatedPacks) {
        DynamicOps<Tag> ops = this.registries.compositeAccess().createSerializationContext(NbtOps.INSTANCE);
        RegistrySynchronization.packRegistries(
            ops,
            this.registries.getAccessFrom(RegistryLayer.WORLDGEN),
            negotiatedPacks,
            (registryKey, entries) -> connection.accept(new ClientboundRegistryDataPacket(registryKey, entries))
        );
        connection.accept(new ClientboundUpdateTagsPacket(TagNetworkSerialization.serializeTagsToNetwork(this.registries)));
    }
 
    public void handleResponse(List<KnownPack> acceptedPacks, Consumer<Packet<?>> connection) {
        if (acceptedPacks.equals(this.requestedPacks)) {
            this.sendRegistries(connection, Set.copyOf(this.requestedPacks));
        } else {
            this.sendRegistries(connection, Set.of());
        }
    }
 
    @Override
    public ConfigurationTask.Type type() {
        return TYPE;
    }
}

引用的其他类