aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-05-09 23:46:15 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-05-09 23:46:15 +0800
commit7de38369a5dbf1abe106c7f825ed94fde6dab05a (patch)
treed9affb9378ad72f111b80708d2b14e93dc76da9c /src/main/java/me
parentc1b0219e8d5458ddf1eccc194d34893f698b7d88 (diff)
downloadRoughlyEnoughItems-7de38369a5dbf1abe106c7f825ed94fde6dab05a.tar.gz
RoughlyEnoughItems-7de38369a5dbf1abe106c7f825ed94fde6dab05a.tar.bz2
RoughlyEnoughItems-7de38369a5dbf1abe106c7f825ed94fde6dab05a.zip
selection screen
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/shedaniel/rei/api/ClientHelper.java3
-rw-r--r--src/main/java/me/shedaniel/rei/client/ClientHelperImpl.java4
-rw-r--r--src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java2
-rw-r--r--src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java127
-rw-r--r--src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java2
5 files changed, 137 insertions, 1 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/ClientHelper.java b/src/main/java/me/shedaniel/rei/api/ClientHelper.java
index ce96836cd..d4648bbaa 100644
--- a/src/main/java/me/shedaniel/rei/api/ClientHelper.java
+++ b/src/main/java/me/shedaniel/rei/api/ClientHelper.java
@@ -8,6 +8,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
import java.util.List;
+import java.util.Map;
public interface ClientHelper extends ClientModInitializer {
static ClientHelper getInstance() {
@@ -20,6 +21,8 @@ public interface ClientHelper extends ClientModInitializer {
List<ItemStack> getInventoryItemsTypes();
+ void openRecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> map);
+
void registerFabricKeyBinds();
boolean tryCheatingStack(ItemStack stack);
diff --git a/src/main/java/me/shedaniel/rei/client/ClientHelperImpl.java b/src/main/java/me/shedaniel/rei/client/ClientHelperImpl.java
index 5a05f0e74..832375918 100644
--- a/src/main/java/me/shedaniel/rei/client/ClientHelperImpl.java
+++ b/src/main/java/me/shedaniel/rei/client/ClientHelperImpl.java
@@ -9,6 +9,7 @@ import me.shedaniel.rei.api.ClientHelper;
import me.shedaniel.rei.api.RecipeCategory;
import me.shedaniel.rei.api.RecipeDisplay;
import me.shedaniel.rei.api.RecipeHelper;
+import me.shedaniel.rei.gui.PreRecipeViewingScreen;
import me.shedaniel.rei.gui.RecipeViewingScreen;
import me.shedaniel.rei.gui.VillagerRecipeViewingScreen;
import net.fabricmc.fabric.api.client.keybinding.FabricKeyBinding;
@@ -189,9 +190,12 @@ public class ClientHelperImpl implements ClientHelper {
return map.keySet().size() > 0;
}
+ @Override
public void openRecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> map) {
if (RoughlyEnoughItemsCore.getConfigManager().getConfig().screenType == RecipeScreenType.VILLAGER)
MinecraftClient.getInstance().openScreen(new VillagerRecipeViewingScreen(map));
+ else if (RoughlyEnoughItemsCore.getConfigManager().getConfig().screenType == RecipeScreenType.UNSET)
+ MinecraftClient.getInstance().openScreen(new PreRecipeViewingScreen(map));
else
MinecraftClient.getInstance().openScreen(new RecipeViewingScreen(map));
}
diff --git a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
index df677c13f..71a274151 100644
--- a/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
+++ b/src/main/java/me/shedaniel/rei/gui/ContainerScreenOverlay.java
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
public class ContainerScreenOverlay extends AbstractParentElement implements Drawable {
- private static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui" + "/recipecontainer.png");
+ private static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
private static final List<QueuedTooltip> QUEUED_TOOLTIPS = Lists.newArrayList();
public static String searchTerm = "";
private static int page = 0;
diff --git a/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java
new file mode 100644
index 000000000..699060edb
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java
@@ -0,0 +1,127 @@
+package me.shedaniel.rei.gui;
+
+import com.google.common.collect.Lists;
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
+import me.shedaniel.rei.api.ClientHelper;
+import me.shedaniel.rei.api.RecipeCategory;
+import me.shedaniel.rei.api.RecipeDisplay;
+import me.shedaniel.rei.client.RecipeScreenType;
+import me.shedaniel.rei.client.ScreenHelper;
+import me.shedaniel.rei.gui.widget.ButtonWidget;
+import me.shedaniel.rei.gui.widget.HighlightableWidget;
+import me.shedaniel.rei.gui.widget.Widget;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.audio.PositionedSoundInstance;
+import net.minecraft.client.gui.Element;
+import net.minecraft.client.gui.Screen;
+import net.minecraft.client.render.GuiLighting;
+import net.minecraft.client.resource.language.I18n;
+import net.minecraft.sound.SoundEvents;
+import net.minecraft.text.TranslatableTextComponent;
+import net.minecraft.util.Identifier;
+
+import java.awt.*;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+public class PreRecipeViewingScreen extends Screen {
+
+ private static final Identifier IDENTIFIER = new Identifier("roughlyenoughitems", "textures/gui/screenshot.png");
+ private final List<Widget> widgets;
+ private boolean original;
+ private Map<RecipeCategory, List<RecipeDisplay>> map;
+
+ public PreRecipeViewingScreen(Map<RecipeCategory, List<RecipeDisplay>> map) {
+ super(new TranslatableTextComponent("text.rei.recipe_screen_type.selection"));
+ this.widgets = Lists.newArrayList();
+ this.original = true;
+ this.map = map;
+ }
+
+ @Override
+ protected void init() {
+ this.children.clear();
+ this.widgets.clear();
+ this.widgets.add(new ButtonWidget(width / 2 - 100, height - 40, 200, 20, I18n.translate("text.rei.select")) {
+ @Override
+ public void onPressed() {
+ RoughlyEnoughItemsCore.getConfigManager().getConfig().screenType = original ? RecipeScreenType.ORIGINAL : RecipeScreenType.VILLAGER;
+ ClientHelper.getInstance().openRecipeViewingScreen(map);
+ }
+ });
+ this.widgets.add(new ScreenTypeSelection(width / 2 - 200 - 5, height / 2 - 112 / 2 - 10, 0));
+ this.widgets.add(new ScreenTypeSelection(width / 2 + 5, height / 2 - 112 / 2 - 10, 112));
+ this.children.addAll(widgets);
+ }
+
+ @Override
+ public void render(int int_1, int int_2, float float_1) {
+ this.renderBackground();
+ this.drawCenteredString(this.font, this.title.getFormattedText(), this.width / 2, 20, 16777215);
+ int i = 30;
+ for(String s : this.font.wrapStringToWidthAsList(I18n.translate("text.rei.recipe_screen_type.selection.sub"), width - 30)) {
+ this.drawCenteredString(this.font, "ยง7" + s, width / 2, i, -1);
+ i += 10;
+ }
+ super.render(int_1, int_2, float_1);
+ this.widgets.forEach(widget -> {
+ GuiLighting.disable();
+ widget.render(int_1, int_2, float_1);
+ });
+ }
+
+ @Override
+ public boolean keyPressed(int int_1, int int_2, int int_3) {
+ if ((int_1 == 256 || this.minecraft.options.keyInventory.matchesKey(int_1, int_2)) && this.shouldCloseOnEsc()) {
+ MinecraftClient.getInstance().openScreen(ScreenHelper.getLastContainerScreen());
+ ScreenHelper.getLastOverlay().init();
+ return true;
+ }
+ return super.keyPressed(int_1, int_2, int_3);
+ }
+
+ public class ScreenTypeSelection extends HighlightableWidget {
+
+ private Rectangle bounds;
+ private int u, v;
+
+ public ScreenTypeSelection(int x, int y, int v) {
+ this.bounds = new Rectangle(x - 4, y - 4, 208, 120);
+ this.u = 0;
+ this.v = v;
+ }
+
+ @Override
+ public Rectangle getBounds() {
+ return bounds;
+ }
+
+ @Override
+ public void render(int i, int i1, float delta) {
+ MinecraftClient.getInstance().getTextureManager().bindTexture(IDENTIFIER);
+ blit(bounds.x + 4, bounds.y + 4, u, v, 200, 112);
+ if (original == (v == 0)) {
+ fillGradient(bounds.x, bounds.y, bounds.x + bounds.width, bounds.y + 2, 0xFFFFFFFF, 0xFFFFFFFF);
+ fillGradient(bounds.x, bounds.y + bounds.height - 2, bounds.x + bounds.width, bounds.y + bounds.height, 0xFFFFFFFF, 0xFFFFFFFF);
+ fillGradient(bounds.x, bounds.y, bounds.x + 2, bounds.y + bounds.height, 0xFFFFFFFF, 0xFFFFFFFF);
+ fillGradient(bounds.x + bounds.width - 2, bounds.y, bounds.x + bounds.width, bounds.y + bounds.height, 0xFFFFFFFF, 0xFFFFFFFF);
+ }
+ }
+
+ @Override
+ public boolean mouseClicked(double double_1, double double_2, int int_1) {
+ if (isHighlighted(double_1, double_2)) {
+ minecraft.getSoundManager().play(PositionedSoundInstance.master(SoundEvents.UI_BUTTON_CLICK, 1.0F));
+ original = (v == 0);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public List<? extends Element> children() {
+ return Collections.emptyList();
+ }
+ }
+}
diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
index 1263e03c3..5fc3d9cd5 100644
--- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
+++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java
@@ -192,6 +192,8 @@ public class VillagerRecipeViewingScreen extends Screen {
GuiLighting.disable();
widget.render(mouseX, mouseY, delta);
});
+ GuiLighting.disable();
+ ScreenHelper.getLastOverlay().render(mouseX, mouseY, delta);
GL11.glPushMatrix();
Scissors.begin();
Scissors.scissor(0, scrollListBounds.y + 1, width, scrollListBounds.height - 2);