diff options
| author | shedaniel <daniel@shedaniel.me> | 2020-04-27 15:25:04 +0800 |
|---|---|---|
| committer | shedaniel <daniel@shedaniel.me> | 2020-04-27 15:25:04 +0800 |
| commit | 93fc2eb1ae95c99ce0c1b6b1ab04d1ce773ad648 (patch) | |
| tree | 7c9fac2a3d1647201ebe1e0c4a09f7afe3b3d1a1 /src/main/java/me/shedaniel/rei/gui/modules/GameModeMenuEntry.java | |
| parent | f701792763abfed441687b27ef91a62ed09abd9d (diff) | |
| download | RoughlyEnoughItems-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/GameModeMenuEntry.java')
| -rw-r--r-- | src/main/java/me/shedaniel/rei/gui/modules/GameModeMenuEntry.java | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/modules/GameModeMenuEntry.java b/src/main/java/me/shedaniel/rei/gui/modules/GameModeMenuEntry.java new file mode 100644 index 000000000..1f539c065 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/gui/modules/GameModeMenuEntry.java @@ -0,0 +1,85 @@ +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 net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.Element; +import net.minecraft.client.sound.PositionedSoundInstance; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.sound.SoundEvents; +import net.minecraft.text.TranslatableText; +import net.minecraft.world.GameMode; + +import java.util.Collections; +import java.util.List; +import java.util.Locale; + +public class GameModeMenuEntry extends SubsetsMenuEntry { + public final String text; + public final GameMode gameMode; + private int x, y, width; + private boolean selected, containsMouse, rendering; + private int textWidth = -69; + + public GameModeMenuEntry(GameMode gameMode) { + this.text = gameMode.getTranslatableName().getString(); + this.gameMode = gameMode; + } + + 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.gamemode_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().getGamemodeCommand().replaceAll("\\{gamemode}", gameMode.name().toLowerCase(Locale.ROOT))); + minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F)); + ScreenHelper.getLastOverlay().removeGameModeMenu(); + return true; + } + return super.mouseClicked(mouseX, mouseY, button); + } +} |
