package net.minecraft.world.level.timers; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.ServerFunctionManager; public record FunctionCallback(ResourceLocation functionId) implements TimerCallback { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( instance -> instance.group(ResourceLocation.CODEC.fieldOf("Name").forGetter(FunctionCallback::functionId)).apply(instance, FunctionCallback::new) ); public void handle(MinecraftServer obj, TimerQueue manager, long gameTime) { ServerFunctionManager serverFunctionManager = obj.getFunctions(); serverFunctionManager.get(this.functionId) .ifPresent(commandFunction -> serverFunctionManager.execute(commandFunction, serverFunctionManager.getGameLoopSender())); } @Override public MapCodec codec() { return CODEC; } }