Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -100,12 +100,9 @@ protected void init() {

var maxsize = 256.;
var imagePathField = new TextFieldWidget(client.textRenderer, columns[0], rows[4], twoColumnSizePadding, rowSizePadding, Text.empty());
var sizeSlider = new SliderWidget(columns[0], rows[1], twoColumnSizePadding, rowSizePadding, Text.translatable("customcursor.edit.size"), 0, maxsize, this.targetConfig.y, 1);
var xPosSlider = new SliderWidget(columns[0], rows[2], columnSizePadding, rowSizePadding, Text.translatable("customcursor.edit.x"), 0., 1., this.targetConfig.x, 1 / 64f);
var yPosSlider = new SliderWidget(columns[1], rows[2], columnSizePadding, rowSizePadding, Text.translatable("customcursor.edit.y"), 0., 1., this.targetConfig.y, 1 / 64f);


sizeSlider.setValueOwn(this.targetConfig.size / maxsize);
var sizeSlider = new SliderWidget(columns[0], rows[1], twoColumnSizePadding, rowSizePadding, Text.translatable("customcursor.edit.size"), this.targetConfig.size,0, maxsize, 256);
var xPosSlider = new SliderWidget(columns[0], rows[2], columnSizePadding, rowSizePadding, Text.translatable("customcursor.edit.x"), this.targetConfig.x,0., 1., 64);
var yPosSlider = new SliderWidget(columns[1], rows[2], columnSizePadding, rowSizePadding, Text.translatable("customcursor.edit.y"), this.targetConfig.y,0., 1., 64);

xPosSlider.setChangedListener(d -> this.targetConfig.x = (float) (double) d);
yPosSlider.setChangedListener(d -> this.targetConfig.y = (float) (double) d);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* Slider widget for general use.
*/
public class SliderWidget extends net.minecraft.client.gui.widget.SliderWidget {
private final float round;
private final int steps;
private Consumer<Double> changedListener;
private Text text;
public double min, max;
Expand All @@ -23,66 +23,37 @@ public class SliderWidget extends net.minecraft.client.gui.widget.SliderWidget {
* @param text
* @param minValue
* @param maxValue
* @param value
* @param round rounding of value.
* For example when round==5 then value range from 0 to 256
* values would only be numbers that are divisible by five (0,5,15,230,255).
* This rule is not applied to value contructor parameter
* @param initialValue
* @param steps
*/
public SliderWidget(int x, int y, int width, int height, Text text, double minValue, double maxValue, double value, float round) {
super(x, y, width, height, text, value);
public SliderWidget(int x, int y, int width, int height, Text text, double initialValue, double minValue, double maxValue, int steps) {
super(x, y, width, height, text, MathHelper.map(initialValue,minValue,maxValue,0,1));
this.min=minValue;
this.max=maxValue;
this.text=text;
this.round=round;
setValueOwn(scaleValueTo01(value));
setMessage(text);
}
public SliderWidget(int x, int y, int width, int height, Text text, double maxValue, double value, int round){
this(x, y, width, height, text,0,maxValue, value,round);
}

@Override
protected void updateMessage() {
}
public void setText(Text text){
this.text=text;
this.steps=steps;
updateMessage();
}
public Text getText(){
return text;
}

@Override
public Text getMessage() {
var val = round(scaleValueFrom01(value));
var isInt = round == (int) round;
var s = isInt ? String.valueOf((int) val) : String.valueOf(val);
return this.text.copy().append(Text.literal(" "+s));
}
public double round(double value){
return ((float)Math.round(value/round))*round;
protected void updateMessage() {
var mappedValue = getMappedValue();
var stringValue = mappedValue == (int)mappedValue
? String.valueOf((int)mappedValue)
: String.valueOf(mappedValue);
this.setMessage(this.text.copy().append(" ").append(stringValue));
}
private double getMappedValue(){
var value = this.value;
value = Math.floor(value*steps)/steps;
value = MathHelper.lerp(value, this.min, this.max);
return value;
}
@Override
protected void applyValue() {
if(changedListener==null)
return;
changedListener.accept(round(scaleValueFrom01(value)));
}
private double scaleValueFrom01(double value){
return value*(max-min)+min;
}
private double scaleValueTo01(double value){
return (value-min)/(max-min);
}
public void setValueOwn(double value) {
double d = this.value;
this.value = MathHelper.clamp(value, 0.0, 1.0);
if (d != this.value) {
this.applyValue();
}

this.updateMessage();
changedListener.accept(getMappedValue());
}

public void setChangedListener(Consumer<Double> changedListener) {
Expand Down