TerraForged/src/main/java/com/terraforged/mod/client/gui/element/TerraBoundSlider.java

55 lines
1.5 KiB
Java

package com.terraforged.mod.client.gui.element;
import com.terraforged.n2d.util.NoiseUtil;
import net.minecraft.nbt.CompoundNBT;
import net.minecraftforge.fml.client.gui.widget.Slider;
public class TerraBoundSlider extends TerraSlider.Float {
private final float pad;
private final String lower;
private final String upper;
public TerraBoundSlider(String name, CompoundNBT value) {
this(name, value, 0.005F);
}
public TerraBoundSlider(String name, CompoundNBT value, float pad) {
super(name, value);
CompoundNBT meta = value.getCompound("#" + name);
this.pad = pad;
this.lower = meta.getString("limit_lower");
this.upper = meta.getString("limit_upper");
}
@Override
protected void onChange(Slider slider, CompoundNBT value) {
int i = (int) (slider.getValue() * 1000);
float lower = getLower(value) + pad;
float upper = getUpper(value) - pad;
float val = NoiseUtil.clamp(i / 1000F, lower, upper);
// update setting value
value.putFloat(name, val);
// update actual slider value
setValue(val);
updateSlider();
}
private float getLower(CompoundNBT value) {
if (lower == null || lower.isEmpty()) {
return 0F;
}
return value.getFloat(lower);
}
private float getUpper(CompoundNBT value) {
if (upper == null || upper.isEmpty()) {
return 1F;
}
return value.getFloat(upper);
}
}