26 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			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;
 | |
| 	}
 | |
| }
 |