aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorUnknown <shekwancheung0528@gmail.com>2019-01-11 18:14:42 +0800
committerUnknown <shekwancheung0528@gmail.com>2019-01-11 18:14:42 +0800
commit0b314135a82f18fa13ce1bcbe66e45ee5b3236a5 (patch)
treee50f48a106d535c418b89ddfc67f2d1f3013be69 /src/main/java
parent3dd1ea9403035bdc32612ec66210342b76c48001 (diff)
downloadRoughlyEnoughItems-0b314135a82f18fa13ce1bcbe66e45ee5b3236a5.tar.gz
RoughlyEnoughItems-0b314135a82f18fa13ce1bcbe66e45ee5b3236a5.tar.bz2
RoughlyEnoughItems-0b314135a82f18fa13ce1bcbe66e45ee5b3236a5.zip
Furnace Recipe + Scrolling in Recipe Window
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java25
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java18
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java4
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java33
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java7
5 files changed, 76 insertions, 11 deletions
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
index 01eee72b2..a3ed1c4ed 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
@@ -1,10 +1,10 @@
package me.shedaniel.rei.gui.widget;
import com.google.common.collect.Lists;
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
import me.shedaniel.rei.client.ClientHelper;
import me.shedaniel.rei.listeners.IMixinContainerGui;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.gui.ContainerGui;
import net.minecraft.client.gui.Drawable;
import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.render.item.ItemRenderer;
@@ -24,7 +24,7 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget {
private static final Identifier RECIPE_GUI = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
private List<ItemStack> itemList = new LinkedList<>();
- private boolean drawBackground, showToolTips;
+ private boolean drawBackground, showToolTips, clickToMoreRecipes;
private int x, y;
private IMixinContainerGui containerGui;
@@ -39,6 +39,12 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget {
this.x = x;
this.y = y;
this.containerGui = containerGui;
+ this.clickToMoreRecipes = false;
+ }
+
+ public ItemSlotWidget(int x, int y, List<ItemStack> itemList, boolean drawBackground, boolean showToolTips, IMixinContainerGui containerGui, boolean clickToMoreRecipes) {
+ this(x, y, itemList, drawBackground, showToolTips, containerGui);
+ this.clickToMoreRecipes = clickToMoreRecipes;
}
public boolean isDrawBackground() {
@@ -93,7 +99,7 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget {
protected ItemStack getCurrentStack() {
if (itemList.size() == 0)
return new ItemStack(Items.AIR);
- return itemList.get(MathHelper.clamp((int) (System.currentTimeMillis() / 500) % itemList.size(), 0, itemList.size() - 1));
+ return itemList.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) itemList.size()) / 1f));
}
public void setItemList(List<ItemStack> itemList) {
@@ -105,4 +111,17 @@ public class ItemSlotWidget extends Drawable implements HighlightableWidget {
return new Rectangle(this.x, this.y, 18, 18);
}
+ @Override
+ public boolean onMouseClick(int button, double mouseX, double mouseY) {
+ if (!clickToMoreRecipes)
+ return false;
+ if (getBounds().contains(mouseX, mouseY)) {
+ if (button == 0)
+ return ClientHelper.executeRecipeKeyBind(containerGui.getOverlay(), getCurrentStack().copy(), containerGui);
+ else if (button == 1)
+ return ClientHelper.executeUsageKeyBind(containerGui.getOverlay(), getCurrentStack().copy(), containerGui);
+ }
+ return false;
+ }
+
}
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java
index 8b6dca71e..b09afa46d 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeViewingWidget.java
@@ -4,6 +4,7 @@ import com.google.common.collect.Lists;
import com.mojang.blaze3d.platform.GlStateManager;
import me.shedaniel.rei.api.IRecipeCategory;
import me.shedaniel.rei.api.IRecipeDisplay;
+import me.shedaniel.rei.client.ClientHelper;
import me.shedaniel.rei.gui.ContainerGuiOverlay;
import me.shedaniel.rei.listeners.IMixinContainerGui;
import net.minecraft.client.MinecraftClient;
@@ -17,10 +18,8 @@ import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import java.awt.*;
-import java.util.ArrayList;
-import java.util.LinkedList;
+import java.util.*;
import java.util.List;
-import java.util.Map;
public class RecipeViewingWidget extends Gui {
@@ -49,6 +48,7 @@ public class RecipeViewingWidget extends Gui {
this.bounds = new Rectangle(window.getScaledWidth() / 2 - guiWidth / 2, window.getScaledHeight() / 2 - guiHeight / 2, guiWidth, guiHeight);
this.categoriesMap = categoriesMap;
this.categories = new LinkedList<>(categoriesMap.keySet());
+ Collections.reverse(categories);
this.selectedCategory = categories.get(0);
this.overlay = overlay;
this.tabs = new ArrayList<>();
@@ -234,6 +234,18 @@ public class RecipeViewingWidget extends Gui {
for(GuiEventListener listener : listeners)
if (listener.mouseScrolled(amount))
return true;
+ if (getBounds().contains(ClientHelper.getMouseLocation())) {
+ if (amount > 0 && recipeBack.enabled)
+ recipeBack.onPressed(0, 0, 0);
+ else if (amount < 0 && recipeNext.enabled)
+ recipeNext.onPressed(0, 0, 0);
+ }
+ if ((new Rectangle(bounds.x, bounds.y - 28, bounds.width, 28)).contains(ClientHelper.getMouseLocation())) {
+ if (amount > 0 && categoryBack.enabled)
+ categoryBack.onPressed(0, 0, 0);
+ else if (amount < 0 && categoryNext.enabled)
+ categoryNext.onPressed(0, 0, 0);
+ }
return super.mouseScrolled(amount);
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java
index 32299c466..ded3e3087 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java
@@ -55,7 +55,7 @@ public class DefaultCraftingCategory implements IRecipeCategory<DefaultCraftingD
List<ItemSlotWidget> slots = Lists.newArrayList();
for(int y = 0; y < 3; y++)
for(int x = 0; x < 3; x++)
- slots.add(new ItemSlotWidget(startPoint.x + 1 + x * 18, startPoint.y + 1 + y * 18, Lists.newArrayList(), true, true, containerGui));
+ slots.add(new ItemSlotWidget(startPoint.x + 1 + x * 18, startPoint.y + 1 + y * 18, Lists.newArrayList(), true, true, containerGui, true));
for(int i = 0; i < input.size(); i++) {
if (recipeDisplay instanceof DefaultShapedDisplay) {
if (!input.get(i).isEmpty())
@@ -64,7 +64,7 @@ public class DefaultCraftingCategory implements IRecipeCategory<DefaultCraftingD
slots.get(i).setItemList(input.get(i));
}
widgets.addAll(slots);
- widgets.add(new ItemSlotWidget(startPoint.x + 95, startPoint.y + 19, recipeDisplay.getOutput(), false, true, containerGui) {
+ widgets.add(new ItemSlotWidget(startPoint.x + 95, startPoint.y + 19, recipeDisplay.getOutput(), false, true, containerGui, true) {
@Override
protected String getItemCountOverlay(ItemStack currentStack) {
if (currentStack.getAmount() == 1)
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java
index 8388b9e00..3784a1f8b 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java
@@ -1,13 +1,27 @@
package me.shedaniel.rei.plugin;
+import com.mojang.blaze3d.platform.GlStateManager;
import me.shedaniel.rei.api.IRecipeCategory;
+import me.shedaniel.rei.gui.widget.IWidget;
+import me.shedaniel.rei.gui.widget.ItemSlotWidget;
+import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
+import me.shedaniel.rei.listeners.IMixinContainerGui;
import net.minecraft.block.Blocks;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.resource.language.I18n;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
+import java.awt.*;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
public class DefaultSmeltingCategory implements IRecipeCategory<DefaultSmeltingDisplay> {
+ private static final Identifier DISPLAY_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/display.png");
+
@Override
public Identifier getIdentifier() {
return DefaultPlugin.SMELTING;
@@ -23,4 +37,23 @@ public class DefaultSmeltingCategory implements IRecipeCategory<DefaultSmeltingD
return I18n.translate("category.rei.smelting");
}
+ @Override
+ public List<IWidget> setupDisplay(IMixinContainerGui containerGui, DefaultSmeltingDisplay recipeDisplay, Rectangle bounds) {
+ Point startPoint = new Point((int) bounds.getCenterX() - 41, (int) bounds.getCenterY() - 27);
+ List<IWidget> widgets = new LinkedList<>(Arrays.asList(new RecipeBaseWidget(bounds) {
+ @Override
+ public void draw(int mouseX, int mouseY, float partialTicks) {
+ super.draw(mouseX, mouseY, partialTicks);
+ GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
+ GuiLighting.disable();
+ MinecraftClient.getInstance().getTextureManager().bindTexture(DISPLAY_TEXTURE);
+ drawTexturedRect(startPoint.x, startPoint.y, 0, 54, 82, 54);
+ }
+ }));
+ List<List<ItemStack>> input = recipeDisplay.getInput();
+ widgets.add(new ItemSlotWidget(startPoint.x + 1, startPoint.y + 1, input.get(0), true, true, containerGui, true));
+ widgets.add(new ItemSlotWidget(startPoint.x + 1, startPoint.y + 37, recipeDisplay.getFuel(), true, true, containerGui, true));
+ widgets.add(new ItemSlotWidget(startPoint.x + 61, startPoint.y + 19, recipeDisplay.getOutput(), false, true, containerGui, true));
+ return widgets;
+ }
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java
index 417bed72f..2b12b7603 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java
@@ -18,16 +18,17 @@ public class DefaultSmeltingDisplay implements IRecipeDisplay<SmeltingRecipe> {
private SmeltingRecipe display;
private List<List<ItemStack>> input;
- private List<ItemStack> fuel, output;
+ private List<ItemStack> output;
public DefaultSmeltingDisplay(SmeltingRecipe recipe) {
this.display = recipe;
- this.fuel = Lists.newArrayList();
+ List<ItemStack> fuel = Lists.newArrayList();
this.input = Lists.newArrayList();
fuel.addAll(FurnaceBlockEntity.createBurnableMap().keySet().stream().map(Item::getDefaultStack).collect(Collectors.toList()));
recipe.getPreviewInputs().forEach(ingredient -> {
input.add(Arrays.asList(ingredient.getStackArray()));
});
+ input.add(fuel);
this.output = Arrays.asList(recipe.getOutput());
}
@@ -42,7 +43,7 @@ public class DefaultSmeltingDisplay implements IRecipeDisplay<SmeltingRecipe> {
}
public List<ItemStack> getFuel() {
- return fuel;
+ return input.get(1);
}
@Override