mirror of
https://github.com/GTNewHorizons/Binnie.git
synced 2026-11-15 01:35:08 +00:00
89 lines
2.4 KiB
Java
89 lines
2.4 KiB
Java
package binnie.extratrees.craftgui;
|
|
|
|
import binnie.core.craftgui.CraftGUI;
|
|
import binnie.core.craftgui.ITooltip;
|
|
import binnie.core.craftgui.IWidget;
|
|
import binnie.core.craftgui.Tooltip;
|
|
import binnie.core.craftgui.WidgetAttribute;
|
|
import binnie.core.craftgui.controls.core.Control;
|
|
import binnie.core.craftgui.geometry.IPoint;
|
|
import binnie.core.craftgui.minecraft.Window;
|
|
import net.minecraftforge.fluids.Fluid;
|
|
import net.minecraftforge.fluids.FluidStack;
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
public class ControlFluidDisplay extends Control implements ITooltip {
|
|
public boolean hasTooltip;
|
|
|
|
protected FluidStack itemStack;
|
|
|
|
public ControlFluidDisplay(IWidget parent, float f, float y) {
|
|
this(parent, f, y, 16.0f);
|
|
}
|
|
|
|
public ControlFluidDisplay(IWidget parent, float f, float y, FluidStack stack, boolean tooltip) {
|
|
this(parent, f, y, 16.0f);
|
|
setItemStack(stack);
|
|
if (tooltip) {
|
|
setTooltip();
|
|
}
|
|
}
|
|
|
|
public ControlFluidDisplay(IWidget parent, float x, float y, float size) {
|
|
super(parent, x, y, size, size);
|
|
itemStack = null;
|
|
hasTooltip = false;
|
|
}
|
|
|
|
public void setTooltip() {
|
|
hasTooltip = true;
|
|
addAttribute(WidgetAttribute.MOUSE_OVER);
|
|
}
|
|
|
|
@Override
|
|
public void onRenderForeground() {
|
|
if (itemStack == null) {
|
|
return;
|
|
}
|
|
|
|
IPoint relativeToWindow = getAbsolutePosition().sub(getSuperParent().getPosition());
|
|
if (relativeToWindow.x() > Window.get(this).getSize().x() + 100.0f
|
|
|| relativeToWindow.y() > Window.get(this).getSize().y() + 100.0f
|
|
|| itemStack == null) {
|
|
return;
|
|
}
|
|
|
|
Fluid fluid = itemStack.getFluid();
|
|
int hex = fluid.getColor(itemStack);
|
|
int r = (hex & 0xFF0000) >> 16;
|
|
int g = (hex & 0xFF00) >> 8;
|
|
int b = hex & 0xFF;
|
|
GL11.glColor4f(r / 255.0f, g / 255.0f, b / 255.0f, 1.0f);
|
|
GL11.glEnable(GL11.GL_BLEND);
|
|
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
|
|
|
if (getSize().x() != 16.0f) {
|
|
GL11.glPushMatrix();
|
|
float scale = getSize().x() / 16.0f;
|
|
GL11.glScalef(scale, scale, 1.0f);
|
|
CraftGUI.render.iconBlock(IPoint.ZERO, itemStack.getFluid().getIcon(itemStack));
|
|
GL11.glPopMatrix();
|
|
} else {
|
|
CraftGUI.render.iconBlock(IPoint.ZERO, itemStack.getFluid().getIcon(itemStack));
|
|
}
|
|
GL11.glDisable(GL11.GL_BLEND);
|
|
GL11.glColor4f(1, 1, 1, 1.0f);
|
|
}
|
|
|
|
public void setItemStack(FluidStack itemStack) {
|
|
this.itemStack = itemStack;
|
|
}
|
|
|
|
@Override
|
|
public void getTooltip(Tooltip tooltip) {
|
|
if (hasTooltip && itemStack != null) {
|
|
tooltip.add(itemStack.getLocalizedName());
|
|
}
|
|
}
|
|
}
|