add FOV feature

This commit is contained in:
2026-07-07 06:35:07 +04:00
parent 9f51c59508
commit 0fae99c535
7 changed files with 122 additions and 7 deletions

View File

@@ -0,0 +1,48 @@
package com.replaymod.pathing.properties;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.replaymod.replaystudio.pathing.property.AbstractProperty;
import com.replaymod.replaystudio.pathing.property.PropertyPart;
import com.replaymod.replaystudio.pathing.property.PropertyParts;
import de.johni0702.minecraft.gui.utils.NonNull;
import org.apache.commons.lang3.tuple.Triple;
import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
public class FovProperty extends AbstractProperty<Triple<Float, Float, Float>> {
public static final float DEFAULT_FOV = 70.0f;
public static volatile Float currentOverride = null;
public static final FovProperty FOV = new FovProperty("fov", DEFAULT_FOV);
public final PropertyPart<Triple<Float, Float, Float>> VALUE =
new PropertyParts.ForFloatTriple(this, true, PropertyParts.TripleElement.LEFT);
private FovProperty(String id, float defaultValue) {
super(id, "replaymod.gui.editkeyframe." + id, null, Triple.of(defaultValue, 0f, 0f));
}
@Override
public Collection<PropertyPart<Triple<Float, Float, Float>>> getParts() {
return Collections.singletonList(VALUE);
}
@Override
public void applyToGame(Triple<Float, Float, Float> value, @NonNull Object replayHandler) {
currentOverride = value.getLeft();
}
@Override
public void toJson(JsonWriter writer, Triple<Float, Float, Float> value) throws IOException {
writer.value(value.getLeft());
}
@Override
public Triple<Float, Float, Float> fromJson(JsonReader reader) throws IOException {
return Triple.of((float) reader.nextDouble(), 0f, 0f);
}
}