aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/gui/modules/WeatherMenuEntry.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2020-04-27 15:25:04 +0800
committershedaniel <daniel@shedaniel.me>2020-04-27 15:25:04 +0800
commit93fc2eb1ae95c99ce0c1b6b1ab04d1ce773ad648 (patch)
tree7c9fac2a3d1647201ebe1e0c4a09f7afe3b3d1a1 /src/main/java/me/shedaniel/rei/gui/modules/WeatherMenuEntry.java
parentf701792763abfed441687b27ef91a62ed09abd9d (diff)
downloadRoughlyEnoughItems-93fc2eb1ae95c99ce0c1b6b1ab04d1ce773ad648.tar.gz
RoughlyEnoughItems-93fc2eb1ae95c99ce0c1b6b1ab04d1ce773ad648.tar.bz2
RoughlyEnoughItems-93fc2eb1ae95c99ce0c1b6b1ab04d1ce773ad648.zip
Improvements to Weather and GameMode options
Signed-off-by: shedaniel <daniel@shedaniel.me>
Diffstat (limited to 'src/main/java/me/shedaniel/rei/gui/modules/WeatherMenuEntry.java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/modules/WeatherMenuEntry.java86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/modules/WeatherMenuEntry.java b/src/main/java/me/shedaniel/rei/gui/modules/WeatherMenuEntry.java
new file mode 100644
index 000000000..900f1c6b7
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/gui/modules/WeatherMenuEntry.java
@@ -0,0 +1,86 @@
+package me.shedaniel.rei.gui.modules;
+
+import me.shedaniel.rei.api.ConfigObject;
+import me.shedaniel.rei.api.REIHelper;
+import me.shedaniel.rei.api.widgets.Tooltip;
+import me.shedaniel.rei.gui.subsets.SubsetsMenuEntry;
+import me.shedaniel.rei.impl.ScreenHelper;
+import me.shedaniel.rei.impl.Weather;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.gui.Element;
+import net.minecraft.client.resource.language.I18n;
+import net.minecraft.client.sound.PositionedSoundInstance;
+import net.minecraft.client.util.math.MatrixStack;
+import net.minecraft.sound.SoundEvents;
+import net.minecraft.text.TranslatableText;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+
+public class WeatherMenuEntry extends SubsetsMenuEntry {
+ public final String text;
+ public final Weather weather;
+ private int x, y, width;
+ private boolean selected, containsMouse, rendering;
+ private int textWidth = -69;
+
+ public WeatherMenuEntry(Weather weather) {
+ this.text = I18n.translate(weather.getTranslateKey());
+ this.weather = weather;
+ }
+
+ private int getTextWidth() {
+ if (textWidth == -69) {
+ this.textWidth = Math.max(0, font.getStringWidth(text));
+ }
+ return this.textWidth;
+ }
+
+ @Override
+ public int getEntryWidth() {
+ return getTextWidth() + 4;
+ }
+
+ @Override
+ public int getEntryHeight() {
+ return 12;
+ }
+
+ @Override
+ public List<? extends Element> children() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public void updateInformation(int xPos, int yPos, boolean selected, boolean containsMouse, boolean rendering, int width) {
+ this.x = xPos;
+ this.y = yPos;
+ this.selected = selected;
+ this.containsMouse = containsMouse;
+ this.rendering = rendering;
+ this.width = width;
+ }
+
+ @Override
+ public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) {
+ if (selected) {
+ fill(matrices, x, y, x + width, y + 12, -12237499);
+ }
+ if (selected && containsMouse) {
+ REIHelper.getInstance().queueTooltip(Tooltip.create(new TranslatableText("text.rei.weather_button.tooltip.entry", text)));
+ }
+ font.draw(matrices, text, x + 2, y + 2, selected ? 16777215 : 8947848);
+ }
+
+ @Override
+ public boolean mouseClicked(double mouseX, double mouseY, int button) {
+ if (rendering && mouseX >= x && mouseX <= x + width && mouseY >= y && mouseY <= y + 12) {
+ MinecraftClient.getInstance().player.sendChatMessage(ConfigObject.getInstance().getWeatherCommand().replaceAll("\\{weather}", weather.name().toLowerCase(Locale.ROOT)));
+ minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F));
+ ScreenHelper.getLastOverlay().removeWeatherMenu();
+ return true;
+ }
+ return super.mouseClicked(mouseX, mouseY, button);
+ }
+}