package space.eptaproject.vmodextras.trackwork; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import org.joml.Vector3d; import org.joml.Vector3dc; public interface IController { float getSuspensionStiffness(); void setSuspensionStiffness(float val); Vector3dc getSuspensionAdjust(); void setSuspensionAdjust(Vector3dc vector3d); default void encode(CompoundTag root) { root.putFloat("SuspensionStiffness", this.getSuspensionStiffness()); { CompoundTag suspensionAdjust = new CompoundTag(); Vector3dc vec = this.getSuspensionAdjust(); suspensionAdjust.putDouble("x", vec.x()); suspensionAdjust.putDouble("y", vec.y()); suspensionAdjust.putDouble("z", vec.z()); root.put("suspensionAdjust", suspensionAdjust); } } default void decode(CompoundTag root) { if (root.contains("SuspensionStiffness", Tag.TAG_FLOAT)) { this.setSuspensionStiffness(root.getFloat("SuspensionStiffness")); } if (root.contains("suspensionAdjust", Tag.TAG_COMPOUND)) { CompoundTag sus = root.getCompound("suspensionAdjust"); this.setSuspensionAdjust(new Vector3d(sus.getDouble("x"), sus.getDouble("y"), sus.getDouble("z"))); } } }