aether-legacy/src/main/java/com/gildedgames/the_aether/client/gui/button/GuiSunAltarSlider.java
2020-08-13 23:29:22 -07:00

96 lines
2.6 KiB
Java

package com.gildedgames.the_aether.client.gui.button;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.world.World;
import org.lwjgl.opengl.GL11;
import com.gildedgames.the_aether.network.AetherNetwork;
import com.gildedgames.the_aether.network.packets.PacketSetTime;
public class GuiSunAltarSlider extends GuiButton {
public float sliderValue;
public boolean dragging = false;
private World world;
public GuiSunAltarSlider(World world, int par2, int par3, String par5Str) {
super(1, par2, par3, 150, 20, par5Str);
this.world = world;
}
/**
* Returns 0 if the button is disabled, 1 if the mouse is NOT hovering over this button and 2 if it IS hovering over
* this button.
*/
public int getHoverState(boolean par1) {
return 0;
}
@Override
protected void mouseDragged(Minecraft mc, int mouseX, int mouseY) {
if (this.visible) {
if (this.dragging) {
this.sliderValue = (float) (mouseX - (this.xPosition + 4)) / (float) (this.width - 8);
long shouldTime = (long) (24000L * sliderValue);
long worldTime = world.getWorldInfo().getWorldTime();
long remainder = worldTime % 24000L;
long add = shouldTime > remainder ? shouldTime - remainder : shouldTime + 24000 - remainder;
world.getWorldInfo().setWorldTime(worldTime + add);
if (this.sliderValue < 0.0F) {
this.sliderValue = 0.0F;
}
if (this.sliderValue > 1.0F) {
this.sliderValue = 1.0F;
}
}
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.xPosition + (int) (this.sliderValue * (float) (this.width - 8)), this.yPosition, 0, 66, 4, 20);
this.drawTexturedModalRect(this.xPosition + (int) (this.sliderValue * (float) (this.width - 8)) + 4, this.yPosition, 196, 66, 4, 20);
}
}
@Override
public void drawButton(Minecraft par1Minecraft, int mouseX, int mouseY) {
this.sliderValue = (this.world.getWorldInfo().getWorldTime() % 24000) / 24000.0F;
super.drawButton(par1Minecraft, mouseX, mouseY);
}
@Override
public boolean mousePressed(Minecraft par1Minecraft, int par2, int par3) {
if (super.mousePressed(par1Minecraft, par2, par3)) {
this.sliderValue = (float) (par2 - (this.xPosition + 4)) / (float) (this.width - 8);
if (this.sliderValue < 0.0F) {
this.sliderValue = 0.0F;
}
if (this.sliderValue > 1.0F) {
this.sliderValue = 1.0F;
}
this.dragging = true;
return true;
} else {
return false;
}
}
@Override
public void mouseReleased(int mouseX, int mouseY) {
this.dragging = false;
AetherNetwork.sendToServer(new PacketSetTime(this.sliderValue, Minecraft.getMinecraft().thePlayer.dimension));
}
}