minecraft-src/net/minecraft/world/level/timers/TimerCallbacks.java
2025-07-04 03:45:38 +03:00

26 lines
1.2 KiB
Java

package net.minecraft.world.level.timers;
import com.google.common.annotations.VisibleForTesting;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import java.util.function.Function;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.ExtraCodecs;
public class TimerCallbacks<C> {
public static final TimerCallbacks<MinecraftServer> SERVER_CALLBACKS = new TimerCallbacks<MinecraftServer>()
.register(ResourceLocation.withDefaultNamespace("function"), FunctionCallback.CODEC)
.register(ResourceLocation.withDefaultNamespace("function_tag"), FunctionTagCallback.CODEC);
private final ExtraCodecs.LateBoundIdMapper<ResourceLocation, MapCodec<? extends TimerCallback<C>>> idMapper = new ExtraCodecs.LateBoundIdMapper<>();
private final Codec<TimerCallback<C>> codec = this.idMapper.codec(ResourceLocation.CODEC).dispatch("Type", TimerCallback::codec, Function.identity());
public TimerCallbacks<C> register(ResourceLocation name, MapCodec<? extends TimerCallback<C>> codec) {
this.idMapper.put(name, codec);
return this;
}
public Codec<TimerCallback<C>> codec() {
return this.codec;
}
}