minecraft-src/net/minecraft/world/entity/schedule/ScheduleBuilder.java
2025-07-04 01:41:11 +03:00

49 lines
1.5 KiB
Java

package net.minecraft.world.entity.schedule;
import com.google.common.collect.Lists;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class ScheduleBuilder {
private final Schedule schedule;
private final List<ScheduleBuilder.ActivityTransition> transitions = Lists.<ScheduleBuilder.ActivityTransition>newArrayList();
public ScheduleBuilder(Schedule schedule) {
this.schedule = schedule;
}
public ScheduleBuilder changeActivityAt(int duration, Activity activity) {
this.transitions.add(new ScheduleBuilder.ActivityTransition(duration, activity));
return this;
}
public Schedule build() {
((Set)this.transitions.stream().map(ScheduleBuilder.ActivityTransition::getActivity).collect(Collectors.toSet()))
.forEach(this.schedule::ensureTimelineExistsFor);
this.transitions.forEach(activityTransition -> {
Activity activity = activityTransition.getActivity();
this.schedule.getAllTimelinesExceptFor(activity).forEach(timeline -> timeline.addKeyframe(activityTransition.getTime(), 0.0F));
this.schedule.getTimelineFor(activity).addKeyframe(activityTransition.getTime(), 1.0F);
});
return this.schedule;
}
static class ActivityTransition {
private final int time;
private final Activity activity;
public ActivityTransition(int time, Activity activity) {
this.time = time;
this.activity = activity;
}
public int getTime() {
return this.time;
}
public Activity getActivity() {
return this.activity;
}
}
}