Code/net/minecraft/world/level/timers/FunctionCallback.java

27 lines
1.3 KiB
Java
Raw Permalink Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.world.level.timers;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import com.mojang.serialization.codecs.RecordCodecBuilder.Instance;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.functions.CommandFunction;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.ServerFunctionManager;
public record FunctionCallback(ResourceLocation functionId) implements TimerCallback<MinecraftServer> {
public static final MapCodec<FunctionCallback> CODEC = RecordCodecBuilder.mapCodec(
p_391138_ -> p_391138_.group(ResourceLocation.CODEC.fieldOf("Name").forGetter(FunctionCallback::functionId)).apply(p_391138_, FunctionCallback::new)
);
public void handle(MinecraftServer p_82172_, TimerQueue<MinecraftServer> p_82173_, long p_82174_) {
ServerFunctionManager serverfunctionmanager = p_82172_.getFunctions();
serverfunctionmanager.get(this.functionId)
.ifPresent(p_309355_ -> serverfunctionmanager.execute((CommandFunction<CommandSourceStack>)p_309355_, serverfunctionmanager.getGameLoopSender()));
}
@Override
public MapCodec<FunctionCallback> codec() {
return CODEC;
}
}