--- /dev/null
+package com.irtimaled.bbor.client.gui;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+
+abstract class AbstractButton extends GuiButton implements IRenderableControl {
+ AbstractButton(int id, int x, int y, int width, String name) {
+ super(id, x, y, width, 20, name);
+ }
+
+ AbstractButton(int id, int x, int y, int width, String name, boolean enabled) {
+ this(id, x, y, width, name);
+ this.enabled = enabled;
+ }
+
+ @Override
+ public void render(int mouseX, int mouseY) {
+ super.render(mouseX, mouseY, 0f);
+ }
+
+ @Override
+ protected void renderBg(Minecraft p_renderBg_1_, int p_renderBg_2_, int p_renderBg_3_) {
+ renderBackground();
+ }
+
+ protected void renderBackground() {
+ }
+
+ @Override
+ protected int getHoverState(boolean p_getHoverState_1_) {
+ return getState();
+ }
+
+ protected int getState() {
+ return this.enabled ? this.hovered ? 2 : 1 : 0;
+ }
+
+ @Override
+ public void onClick(double mouseX, double mouseY) {
+ super.onClick(mouseX, mouseY);
+ onPressed();
+ }
+
+ protected abstract void onPressed();
+}
--- /dev/null
+package com.irtimaled.bbor.client.gui;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.util.math.MathHelper;
+import org.lwjgl.opengl.GL11;
+
+abstract class AbstractSlider extends GuiButton implements IRenderableControl {
+ double progress;
+
+ AbstractSlider(int id, int x, int y, int width) {
+ super(id, x, y, width, 20, "");
+ }
+
+ @Override
+ public void render(int mouseX, int mouseY) {
+ super.render(mouseX, mouseY, 0f);
+ }
+
+ @Override
+ protected void renderBg(Minecraft minecraft, int mouseX, int mouseY) {
+ minecraft.getTextureManager().bindTexture(BUTTON_TEXTURES);
+ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+ this.drawTexturedModalRect(this.x + (int) (this.progress * (double) (this.width - 8)), this.y, 0, 66, 4, 20);
+ this.drawTexturedModalRect(this.x + (int) (this.progress * (double) (this.width - 8)) + 4, this.y, 196, 66, 4, 20);
+ }
+
+ boolean setProgress(double progress) {
+ progress = MathHelper.clamp(progress, 0d, 1d);
+ if (this.progress == progress) return false;
+
+ this.progress = progress;
+ return true;
+ }
+
+ private void changeProgress(double mouseX) {
+ double progress = (mouseX - (double) (this.x + 4)) / (double) (this.width - 8);
+ if (setProgress(progress)) {
+ onProgressChanged();
+ }
+ updateText();
+ }
+
+ @Override
+ protected int getHoverState(boolean hovered) {
+ return 0;
+ }
+
+ @Override
+ protected void onDrag(double mouseX, double mouseY, double deltaX, double deltaY) {
+ changeProgress(mouseX);
+ super.onDrag(mouseX, mouseY, deltaX, deltaY);
+ }
+
+ @Override
+ public void onClick(double mouseX, double mouseY) {
+ changeProgress(mouseX);
+ super.onClick(mouseX, mouseY);
+ }
+
+ protected abstract void updateText();
+
+ protected abstract void onProgressChanged();
+}
import com.irtimaled.bbor.config.Setting;
-public class BoolSettingButton extends Button {
+public class BoolSettingButton extends AbstractButton {
private final Setting<Boolean> setting;
BoolSettingButton(int id, int x, int y, int width, String label, Setting<Boolean> setting) {
}
@Override
- protected int getHoverState(boolean p_getHoverState_1_) {
+ protected int getState() {
return setting.get() ? 2 : 1;
}
@Override
- public void onClick(double p_onClick_1_, double p_onClick_3_) {
+ public void onPressed() {
setting.set(!setting.get());
}
}
package com.irtimaled.bbor.client.gui;
import com.irtimaled.bbor.common.BoundingBoxType;
-import net.minecraft.client.Minecraft;
import java.awt.*;
}
@Override
- protected void renderBg(Minecraft p_renderBg_1_, int p_renderBg_2_, int p_renderBg_3_) {
+ protected void renderBackground() {
int left = x + 1;
int top = y + 1;
int right = left + width - 2;
+++ /dev/null
-package com.irtimaled.bbor.client.gui;
-
-import net.minecraft.client.gui.GuiButton;
-
-class Button extends GuiButton implements IRenderableControl {
- Button(int id, int x, int y, int width, String name) {
- super(id, x, y, width, 20, name);
- }
-
- Button(int id, int x, int y, int width, String name, boolean enabled) {
- this(id, x,y,width,name);
- this.enabled = enabled;
- }
-
- @Override
- public void render(int mouseX, int mouseY) {
- super.render(mouseX, mouseY, 0f);
- }
-}
package com.irtimaled.bbor.client.gui;
import com.irtimaled.bbor.config.Setting;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.util.math.MathHelper;
import java.util.HashMap;
import java.util.Map;
-class IntSettingSlider extends Button implements IRenderableControl {
- private final int maxValue;
+class IntSettingSlider extends AbstractSlider implements IRenderableControl {
private final String prefix;
- private boolean dragging;
private Map<Integer, String> displayValues = new HashMap<>();
final Setting<Integer> setting;
final int minValue;
final int range;
- double sliderValue;
IntSettingSlider(int id, int x, int y, int width, int minValue, int maxValue, String prefix, Setting<Integer> setting) {
- super(id, x, y, width, "");
+ super(id, x, y, width);
this.setting = setting;
this.minValue = minValue;
- this.maxValue = maxValue;
this.prefix = prefix;
this.range = maxValue - minValue;
- this.sliderValue = getSliderValue();
- this.displayString = getDisplayValue();
+ this.setProgress(getSliderValue());
+ this.updateText();
}
IntSettingSlider addDisplayValue(int value, String displayValue) {
displayValues.put(value, displayValue);
- if(setting.get() == value) {
- this.displayString = getDisplayValue();
+ if (setting.get() == value) {
+ this.updateText();
}
return this;
}
}
protected Integer getSettingValue() {
- return MathHelper.clamp(minValue + (int) (range * sliderValue), minValue, maxValue);
+ return minValue + (int) (range * progress);
}
protected double getSliderValue() {
- return MathHelper.clamp((setting.get() - minValue) / (double) range, 0d, 1d);
+ return (setting.get() - minValue) / (double) range;
}
@Override
- protected int getHoverState(boolean p_getHoverState_1_) {
- return 0;
+ protected void updateText() {
+ this.displayString = this.getDisplayValue();
}
@Override
- protected void renderBg(Minecraft minecraft, int mouseX, int mouseY) {
- if (this.dragging) {
- changeSlider(mouseX);
- }
-
- minecraft.getTextureManager().bindTexture(BUTTON_TEXTURES);
- GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
- this.drawTexturedModalRect(this.x + (int) (this.sliderValue * (double) (this.width - 8)), this.y, 0, 66, 4, 20);
- this.drawTexturedModalRect(this.x + (int) (this.sliderValue * (double) (this.width - 8)) + 4, this.y, 196, 66, 4, 20);
- }
-
- public final void onClick(double mouseX, double mouseY) {
- changeSlider(mouseX);
- this.dragging = true;
- }
-
- private void changeSlider(double mouseX) {
- double proportion = (mouseX - (double) (this.x + 4)) / (double) (this.width - 8);
- this.sliderValue = MathHelper.clamp(proportion, 0d, 1d);
+ protected void onProgressChanged() {
this.setting.set(this.getSettingValue());
- this.displayString = this.getDisplayValue();
- }
-
- public void onRelease(double p_onRelease_1_, double p_onRelease_3_) {
- this.dragging = false;
}
}
package com.irtimaled.bbor.client.gui;
import com.irtimaled.bbor.config.Setting;
-import net.minecraft.util.math.MathHelper;
class MaxYSettingSlider extends IntSettingSlider {
private final int actualMinValue;
MaxYSettingSlider(int id, int x, int y, int width, int minValue, Setting<Integer> setting) {
super(id, x, y, width, minValue - 2, 127, "Max Y", setting);
this.actualMinValue = minValue;
- this.sliderValue = getSliderValue();
+ this.setProgress(getSliderValue());
this.addDisplayValue(-1, "Activated");
this.addDisplayValue(0, "Player");
this.addDisplayValue(63, "Sea Level");
if (value < actualMinValue)
value = (value - 1) + actualMinValue;
- return MathHelper.clamp((value - minValue) / (double) range, 0d, 1d);
+ return (value - minValue) / (double) range;
}
}
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.IGuiEventListener;
import net.minecraft.client.renderer.BufferBuilder;
-import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
+import org.lwjgl.opengl.GL11;
import java.util.HashSet;
import java.util.Set;
SettingsScreen(GuiScreen lastScreen, int tabIndex) {
this.lastScreen = lastScreen;
this.tabIndex = tabIndex;
-
}
public static void show() {
for (String label : labels) {
final int index = column;
addControl(0, column, y, CONTROLS_WIDTH / columns,
- (id, x, y1, width) -> new Button(id, x, y, width, label, index != tabIndex) {
- public void onClick(double p_onClick_1_, double p_onClick_3_) {
+ (id, x, y1, width) -> new AbstractButton(id, x, y, width, label, index != tabIndex) {
+ @Override
+ public void onPressed() {
Minecraft.getInstance().displayGuiScreen(new SettingsScreen(lastScreen, index));
}
});
}
//done button
- addControl(new Button(200, this.width / 2 - 100, getY(5.5), 200, "Done") {
- public void onClick(double p_onClick_1_, double p_onClick_3_) {
+ addControl(new AbstractButton(200, this.width / 2 - 100, getY(5.5), 200, "Done") {
+ @Override
+ public void onPressed() {
ConfigManager.saveConfig();
mc.displayGuiScreen(lastScreen);
}
}
private void buildTab(int tabIndex, CreateControl... createControls) {
- if(tabIndex != this.tabIndex) return;
+ if (tabIndex != this.tabIndex) return;
int offset = 4;
int width = (CONTROLS_WIDTH - (2 * offset)) / 3;
this.addTabs("General", "Structures", "Villages");
buildTab(0,
- (id, x, y, width) -> new Button(id, x, y, width, "Active", this.mc.world != null) {
- public void onClick(double p_onClick_1_, double p_onClick_3_) {
+ (id, x, y, width) -> new AbstractButton(id, x, y, width, "Active", this.mc.world != null) {
+ @Override
+ public void onPressed() {
ClientProxy.toggleActive();
}
- protected int getHoverState(boolean p_getHoverState_1_) {
+ @Override
+ protected int getState() {
return enabled ? ClientProxy.active ? 2 : 1 : 0;
}
},
BufferBuilder bufferBuilder = tessellator.getBuffer();
this.mc.getTextureManager().bindTexture(Gui.OPTIONS_BACKGROUND);
- GlStateManager.disableLighting();
- GlStateManager.disableFog();
- GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
+ GL11.glDisable(GL11.GL_LIGHTING);
+ GL11.glDisable(GL11.GL_FOG);
+ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
- bufferBuilder.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
+ bufferBuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);
bufferBuilder.pos((double) 0, (double) bottom, 0.0D)
.tex((double) ((float) 0 / 32.0F), (double) ((float) bottom / 32.0F))
.color(32, 32, 32, 255)
.endVertex();
tessellator.draw();
- GlStateManager.disableDepthTest();
- GlStateManager.enableBlend();
- GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ZERO, GlStateManager.DestFactor.ONE);
- GlStateManager.disableAlphaTest();
- GlStateManager.shadeModel(7425);
- GlStateManager.disableTexture2D();
+ GL11.glDisable(GL11.GL_DEPTH_TEST);
+ GL11.glEnable(GL11.GL_BLEND);
+ OpenGlHelper.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ZERO, GL11.GL_ONE);
+
+ GL11.glDisable(GL11.GL_ALPHA_TEST);
+ GL11.glShadeModel(7425);
+ GL11.glDisable(GL11.GL_TEXTURE_2D);
bufferBuilder.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
bufferBuilder.pos((double) 0, (double) (top + 4), 0.0D)
.endVertex();
tessellator.draw();
- GlStateManager.enableTexture2D();
- GlStateManager.shadeModel(7424);
- GlStateManager.enableAlphaTest();
- GlStateManager.disableBlend();
+ GL11.glEnable(GL11.GL_TEXTURE_2D);
+ GL11.glShadeModel(7424);
+ GL11.glEnable(GL11.GL_ALPHA_TEST);
+ GL11.glDisable(GL11.GL_BLEND);
}
@Override
public void render(int mouseX, int mouseY, float unknown) {
- if(this.mc.world == null) {
+ if (this.mc.world == null) {
this.drawDefaultBackground();
this.drawScreen(getY(-1), getY(5.5) - 4);
}
package com.irtimaled.bbor.client.gui;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
-public class SettingsScreenButton extends GuiButton {
+public class SettingsScreenButton extends AbstractButton {
private final SettingsScreen screen;
- public SettingsScreenButton(int id, int x, int y, int height, int width, String label, GuiScreen lastScreen) {
- super(id, x, y, height, width, label);
+ public SettingsScreenButton(int id, int x, int y, int width, String label, GuiScreen lastScreen) {
+ super(id, x, y, width, label);
screen = new SettingsScreen(lastScreen, 0);
}
@Override
- public void onClick(double p_onClick_1_, double p_onClick_3_) {
+ public void onPressed() {
Minecraft.getInstance().displayGuiScreen(screen);
}
}
if (button.id != 200 && button.y >= top)
button.y -= 12;
}
- this.addButton(new SettingsScreenButton(200, this.width / 2 - 155, top + 84, 150, 20, "BBOR", this));
+ this.addButton(new SettingsScreenButton(200, this.width / 2 - 155, top + 84, 150, "BBOR", this));
}
}