aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/detrav/gui/OresList.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/detrav/gui/OresList.java')
-rw-r--r--src/main/java/detrav/gui/OresList.java66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/main/java/detrav/gui/OresList.java b/src/main/java/detrav/gui/OresList.java
new file mode 100644
index 0000000000..91252760ec
--- /dev/null
+++ b/src/main/java/detrav/gui/OresList.java
@@ -0,0 +1,66 @@
+package detrav.gui;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.function.BiConsumer;
+
+import net.minecraft.client.gui.GuiScreen;
+import net.minecraft.client.renderer.Tessellator;
+
+import cpw.mods.fml.client.GuiScrollingList;
+
+class OresList extends GuiScrollingList {
+
+ private final HashMap<String, Integer> ores;
+ private final List<String> keys;
+ private final GuiScreen parent;
+ private final BiConsumer<String, Boolean> onSelected;
+ private boolean invert = false;
+
+ private int selected = -1;
+
+ public OresList(GuiScreen parent, int width, int height, int top, int bottom, int left, int entryHeight,
+ HashMap<String, Integer> aOres, BiConsumer<String, Boolean> onSelected) {
+ super(parent.mc, width, height, top, bottom, left, entryHeight);
+ this.parent = parent;
+ this.onSelected = onSelected;
+ ores = aOres;
+ keys = new ArrayList<>(ores.keySet());
+ Collections.sort(keys);
+ if (keys.size() > 1) keys.add(0, "All");
+ selected = 0;
+ }
+
+ @Override
+ protected int getSize() {
+ return keys.size();
+ }
+
+ @Override
+ protected void elementClicked(int index, boolean doubleClick) {
+ selected = index;
+ if (doubleClick) this.invert = !this.invert;
+
+ if (onSelected != null) onSelected.accept(keys.get(index), this.invert);
+ }
+
+ @Override
+ protected boolean isSelected(int index) {
+ return selected == index;
+ }
+
+ @Override
+ protected void drawBackground() {}
+
+ @Override
+ protected void drawSlot(int slotIdx, int entryRight, int slotTop, int slotBuffer, Tessellator tess) {
+ parent.drawString(
+ parent.mc.fontRenderer,
+ parent.mc.fontRenderer.trimStringToWidth(keys.get(slotIdx), listWidth - 10),
+ this.left + 3,
+ slotTop - 1,
+ ores.getOrDefault(keys.get(slotIdx), 0x7d7b76));
+ }
+}