From 0df3e928a2a82b4a4977664c044c0faaee64facb Mon Sep 17 00:00:00 2001 From: Marcel Konrad Date: Fri, 13 Apr 2018 21:11:58 +0200 Subject: [PATCH] Fix wrong position calculation when min and max value are equal --- .../worldhandler/gui/button/GuiSlider.java | 19 ++++++++----------- .../gui/button/storage/SliderStorage.java | 16 +++++++++++++--- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java b/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java index 42ca799..3b3d9db 100644 --- a/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java +++ b/src/main/java/exopandora/worldhandler/gui/button/GuiSlider.java @@ -41,24 +41,21 @@ public class GuiSlider extends GuiButton private void initStorage(double min, double max, double start) { - if(this.storage.getObject() == null || this.storage.getObject().getMin() != min || this.storage.getObject().getMax() != max) + if(this.storage.getObject() == null) { - if(this.storage.getObject() == null) + if(min == max) { - if(min == max) - { - this.storage.setObject(new SliderStorage(min, max, 0)); - } - else - { - this.storage.setObject(new SliderStorage(min, max, (start - min) / (max - min))); - } + this.storage.setObject(new SliderStorage(min, max, 0.0D)); } else { - this.storage.setObject(new SliderStorage(min, max, (int) MathHelper.clamp(this.getValue(), min, max))); + this.storage.setObject(new SliderStorage(min, max, (start - min) / (max - min))); } } + else if(this.storage.getObject().getMin() != min || this.storage.getObject().getMax() != max) + { + this.storage.setObject(new SliderStorage(min, max, (int) MathHelper.clamp(this.getValue(), min, max))); + } } private void setPosition(double position) diff --git a/src/main/java/exopandora/worldhandler/gui/button/storage/SliderStorage.java b/src/main/java/exopandora/worldhandler/gui/button/storage/SliderStorage.java index fd38fa8..594a505 100644 --- a/src/main/java/exopandora/worldhandler/gui/button/storage/SliderStorage.java +++ b/src/main/java/exopandora/worldhandler/gui/button/storage/SliderStorage.java @@ -3,6 +3,7 @@ package exopandora.worldhandler.gui.button.storage; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; + @SideOnly(Side.CLIENT) public class SliderStorage { @@ -10,17 +11,21 @@ public class SliderStorage private final double max; private double position; - public SliderStorage(double min, double max, double position) + private SliderStorage(double min, double max) { this.min = min; this.max = max; + } + + public SliderStorage(double min, double max, double position) + { + this(min, max); this.position = position; } public SliderStorage(double min, double max, int value) { - this.min = min; - this.max = max; + this(min, max); this.position = this.valueToPosition(value); } @@ -56,6 +61,11 @@ public class SliderStorage private double valueToPosition(int value) { + if(this.min == this.max) + { + return 0; + } + return (value - this.min) / (this.max - this.min); } } \ No newline at end of file