aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/shedaniel/rei/api/RecipeCategory.java2
-rw-r--r--src/main/java/me/shedaniel/rei/api/Renderable.java19
-rw-r--r--src/main/java/me/shedaniel/rei/api/Renderer.java13
-rw-r--r--src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java2
-rw-r--r--src/main/java/me/shedaniel/rei/gui/renderables/EmptyRenderer.java13
-rw-r--r--src/main/java/me/shedaniel/rei/gui/renderables/ItemStackRenderer.java (renamed from src/main/java/me/shedaniel/rei/gui/renderables/ItemStackRenderable.java)15
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java12
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java153
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java203
-rw-r--r--src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java17
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java8
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java14
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultCampfireCategory.java6
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultCraftingCategory.java8
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingCategory.java8
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java8
-rw-r--r--src/main/java/me/shedaniel/rei/plugin/DefaultStoneCuttingCategory.java6
17 files changed, 305 insertions, 202 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java
index edd215848..415984068 100644
--- a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java
+++ b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java
@@ -20,7 +20,7 @@ public interface RecipeCategory<T extends RecipeDisplay> {
ItemStack getCategoryIcon();
- default Renderable getIcon() {
+ default Renderer getIcon() {
return Renderable.fromItemStackSupplier(this::getCategoryIcon);
}
diff --git a/src/main/java/me/shedaniel/rei/api/Renderable.java b/src/main/java/me/shedaniel/rei/api/Renderable.java
index b4781d563..35c9890b8 100644
--- a/src/main/java/me/shedaniel/rei/api/Renderable.java
+++ b/src/main/java/me/shedaniel/rei/api/Renderable.java
@@ -1,29 +1,34 @@
package me.shedaniel.rei.api;
-import me.shedaniel.rei.gui.renderables.ItemStackRenderable;
+import me.shedaniel.rei.gui.renderables.EmptyRenderer;
+import me.shedaniel.rei.gui.renderables.ItemStackRenderer;
import net.minecraft.item.ItemStack;
import java.util.function.Supplier;
public interface Renderable {
- static ItemStackRenderable fromItemStackSupplier(Supplier<ItemStack> supplier) {
- return new ItemStackRenderable() {
+ static ItemStackRenderer fromItemStackSupplier(Supplier<ItemStack> supplier) {
+ return new ItemStackRenderer() {
@Override
- protected ItemStack getItemStack() {
+ public ItemStack getItemStack() {
return supplier.get();
}
};
}
- static ItemStackRenderable fromItemStack(ItemStack stack) {
- return new ItemStackRenderable() {
+ static ItemStackRenderer fromItemStack(ItemStack stack) {
+ return new ItemStackRenderer() {
@Override
- protected ItemStack getItemStack() {
+ public ItemStack getItemStack() {
return stack;
}
};
}
+ static EmptyRenderer empty() {
+ return EmptyRenderer.INSTANCE;
+ }
+
void render(int x, int y, double mouseX, double mouseY, float delta);
}
diff --git a/src/main/java/me/shedaniel/rei/api/Renderer.java b/src/main/java/me/shedaniel/rei/api/Renderer.java
new file mode 100644
index 000000000..569285d84
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/api/Renderer.java
@@ -0,0 +1,13 @@
+package me.shedaniel.rei.api;
+
+import net.minecraft.client.gui.DrawableHelper;
+
+public abstract class Renderer extends DrawableHelper implements Renderable {
+ public int getBlitOffset() {
+ return this.blitOffset;
+ }
+
+ public void setBlitOffset(int offset) {
+ this.blitOffset = offset;
+ }
+}
diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
index c35c31a5b..c56c2c7cb 100644
--- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
+++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java
@@ -249,7 +249,7 @@ public class RecipeViewingScreen extends Screen {
return false;
}
});
- tab.setRenderable(categories.get(j), categories.get(j).getIcon(), categories.get(j).getCategoryName(), tab.getId() + categoryPages * 6 == categories.indexOf(selectedCategory));
+ tab.setRenderer(categories.get(j), categories.get(j).getIcon(), categories.get(j).getCategoryName(), tab.getId() + categoryPages * 6 == categories.indexOf(selectedCategory));
}
}
Optional<ButtonAreaSupplier> supplier = RecipeHelper.getInstance().getSpeedCraftButtonArea(selectedCategory);
diff --git a/src/main/java/me/shedaniel/rei/gui/renderables/EmptyRenderer.java b/src/main/java/me/shedaniel/rei/gui/renderables/EmptyRenderer.java
new file mode 100644
index 000000000..0c2f9bbfa
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/gui/renderables/EmptyRenderer.java
@@ -0,0 +1,13 @@
+package me.shedaniel.rei.gui.renderables;
+
+import me.shedaniel.rei.api.Renderer;
+
+public class EmptyRenderer extends Renderer {
+
+ public static final EmptyRenderer INSTANCE = new EmptyRenderer();
+
+ @Override
+ public void render(int x, int y, double mouseX, double mouseY, float delta) {
+
+ }
+}
diff --git a/src/main/java/me/shedaniel/rei/gui/renderables/ItemStackRenderable.java b/src/main/java/me/shedaniel/rei/gui/renderables/ItemStackRenderer.java
index c3904357d..139e88a19 100644
--- a/src/main/java/me/shedaniel/rei/gui/renderables/ItemStackRenderable.java
+++ b/src/main/java/me/shedaniel/rei/gui/renderables/ItemStackRenderer.java
@@ -1,15 +1,14 @@
package me.shedaniel.rei.gui.renderables;
import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.client.gui.DrawableHelper;
import net.minecraft.client.render.GuiLighting;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
-public abstract class ItemStackRenderable extends DrawableHelper implements Renderable {
+public abstract class ItemStackRenderer extends Renderer {
public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
@@ -17,17 +16,19 @@ public abstract class ItemStackRenderable extends DrawableHelper implements Rend
public void render(int x, int y, double mouseX, double mouseY, float delta) {
int l = x - 8, i1 = y - 6;
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
- this.blitOffset = 100;
ItemRenderer itemRenderer = MinecraftClient.getInstance().getItemRenderer();
- itemRenderer.zOffset = 100.0F;
+ itemRenderer.zOffset = blitOffset;
GuiLighting.enableForItems();
+ GlStateManager.colorMask(true, true, true, true);
+ GlStateManager.enableLighting();
+ GlStateManager.enableRescaleNormal();
+ GlStateManager.enableDepthTest();
itemRenderer.renderGuiItem(getItemStack(), l, i1);
itemRenderer.renderGuiItemOverlay(MinecraftClient.getInstance().textRenderer, getItemStack(), l, i1);
- GlStateManager.disableLighting();
itemRenderer.zOffset = 0.0F;
this.blitOffset = 0;
}
- protected abstract ItemStack getItemStack();
+ public abstract ItemStack getItemStack();
}
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
index a04956e8d..f819b6281 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemListOverlay.java
@@ -109,7 +109,7 @@ public class ItemListOverlay extends Widget {
j++;
if (j > currentDisplayed.size())
break;
- widgets.add(new ItemSlotWidget(x, y, Collections.singletonList(currentDisplayed.get(j - 1)), false, true, true) {
+ widgets.add(new SlotWidget(x, y, Collections.singletonList(currentDisplayed.get(j - 1)), false, true, true) {
@Override
protected void queueTooltip(ItemStack itemStack, float delta) {
ClientPlayerEntity player = minecraft.player;
@@ -119,10 +119,10 @@ public class ItemListOverlay extends Widget {
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (isHighlighted(mouseX, mouseY)) {
+ if (isCurrentRendererItem() && isHighlighted(mouseX, mouseY)) {
if (ClientHelper.getInstance().isCheating()) {
- if (getCurrentStack() != null && !getCurrentStack().isEmpty()) {
- ItemStack cheatedStack = getCurrentStack().copy();
+ if (getCurrentItemStack() != null && !getCurrentItemStack().isEmpty()) {
+ ItemStack cheatedStack = getCurrentItemStack().copy();
if (RoughlyEnoughItemsCore.getConfigManager().getConfig().itemCheatingMode == ItemCheatingMode.REI_LIKE)
cheatedStack.setAmount(button != 1 ? 1 : cheatedStack.getMaxAmount());
else if (RoughlyEnoughItemsCore.getConfigManager().getConfig().itemCheatingMode == ItemCheatingMode.JEI_LIKE)
@@ -132,9 +132,9 @@ public class ItemListOverlay extends Widget {
return ClientHelper.getInstance().tryCheatingStack(cheatedStack);
}
} else if (button == 0)
- return ClientHelper.getInstance().executeRecipeKeyBind(getCurrentStack().copy());
+ return ClientHelper.getInstance().executeRecipeKeyBind(getCurrentItemStack().copy());
else if (button == 1)
- return ClientHelper.getInstance().executeUsageKeyBind(getCurrentStack().copy());
+ return ClientHelper.getInstance().executeUsageKeyBind(getCurrentItemStack().copy());
}
return false;
}
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 5081cc00a..7509c45df 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/ItemSlotWidget.java
@@ -1,158 +1,25 @@
package me.shedaniel.rei.gui.widget;
-import com.google.common.collect.Lists;
-import com.mojang.blaze3d.platform.GlStateManager;
-import me.shedaniel.cloth.api.ClientUtils;
-import me.shedaniel.rei.RoughlyEnoughItemsCore;
-import me.shedaniel.rei.api.ClientHelper;
-import me.shedaniel.rei.client.ScreenHelper;
-import net.minecraft.client.gui.Element;
-import net.minecraft.client.render.GuiLighting;
-import net.minecraft.client.render.item.ItemRenderer;
+import me.shedaniel.rei.api.Renderer;
import net.minecraft.item.ItemStack;
-import net.minecraft.item.Items;
-import net.minecraft.util.Identifier;
-import net.minecraft.util.math.MathHelper;
-import java.awt.*;
-import java.util.Collections;
-import java.util.LinkedList;
+import java.util.Collection;
import java.util.List;
-public class ItemSlotWidget extends HighlightableWidget {
-
- private static final Identifier RECIPE_GUI = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
- private List<ItemStack> itemList = new LinkedList<>();
- private boolean drawBackground, showToolTips, clickToMoreRecipes, drawHighlightedBackground;
- private int x, y;
-
+public class ItemSlotWidget extends SlotWidget {
public ItemSlotWidget(int x, int y, ItemStack itemStack, boolean drawBackground, boolean showToolTips) {
- this(x, y, Collections.singletonList(itemStack), drawBackground, showToolTips);
- }
-
- public ItemSlotWidget(int x, int y, List<ItemStack> itemList, boolean drawBackground, boolean showToolTips) {
- this.itemList = itemList;
- this.drawBackground = drawBackground;
- this.showToolTips = showToolTips;
- this.x = x;
- this.y = y;
- this.clickToMoreRecipes = false;
- this.drawHighlightedBackground = true;
- }
-
- public ItemSlotWidget(int x, int y, List<ItemStack> itemList, boolean drawBackground, boolean showToolTips, boolean clickToMoreRecipes) {
- this(x, y, itemList, drawBackground, showToolTips);
- this.clickToMoreRecipes = clickToMoreRecipes;
- }
-
- @Override
- public List<? extends Element> children() {
- return Collections.emptyList();
- }
-
- public void setDrawHighlightedBackground(boolean drawHighlightedBackground) {
- this.drawHighlightedBackground = drawHighlightedBackground;
- }
-
- public boolean isDrawBackground() {
- return drawBackground;
- }
-
- @Override
- public void render(int mouseX, int mouseY, float delta) {
- ItemStack itemStack = getCurrentStack().copy();
- if (drawBackground) {
- minecraft.getTextureManager().bindTexture(RECIPE_GUI);
- blit(this.x - 1, this.y - 1, 0, 222, 18, 18);
- }
- boolean highlighted = isHighlighted(mouseX, mouseY);
- if (drawHighlightedBackground && highlighted) {
- GlStateManager.disableLighting();
- GlStateManager.disableDepthTest();
- GlStateManager.colorMask(true, true, true, false);
- fillGradient(x, y, x + 16, y + 16, -2130706433, -2130706433);
- GlStateManager.colorMask(true, true, true, true);
- GlStateManager.enableLighting();
- GlStateManager.enableDepthTest();
- }
- if (!itemStack.isEmpty()) {
- if (RoughlyEnoughItemsCore.getConfigManager().getConfig().aprilFoolsFish2019 && !highlighted)
- itemStack = Items.TROPICAL_FISH.getDefaultStack();
- GuiLighting.enableForItems();
- ItemRenderer itemRenderer = minecraft.getItemRenderer();
- itemRenderer.zOffset = 200.0F;
- itemRenderer.renderGuiItem(itemStack, x, y);
- itemRenderer.renderGuiItemOverlay(font, itemStack, x, y, getItemCountOverlay(itemStack));
- itemRenderer.zOffset = 0.0F;
- }
- if (!itemStack.isEmpty() && highlighted && showToolTips)
- queueTooltip(itemStack, delta);
+ super(x, y, itemStack, drawBackground, showToolTips);
}
- protected void queueTooltip(ItemStack itemStack, float delta) {
- ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltip(itemStack)));
+ public ItemSlotWidget(int x, int y, Collection<ItemStack> itemList, boolean drawBackground, boolean showToolTips) {
+ super(x, y, itemList, drawBackground, showToolTips);
}
- protected List<String> getTooltip(ItemStack itemStack) {
- final String modString = ClientHelper.getInstance().getFormattedModFromItem(itemStack.getItem());
- List<String> toolTip = Lists.newArrayList(ItemListOverlay.tryGetItemStackToolTip(itemStack, true));
- toolTip.addAll(getExtraToolTips(itemStack));
- boolean alreadyHasMod = false;
- for(String s : toolTip)
- if (s.equalsIgnoreCase(modString)) {
- alreadyHasMod = true;
- break;
- }
- if (!alreadyHasMod)
- toolTip.add(modString);
- return toolTip;
+ public ItemSlotWidget(int x, int y, List<Renderer> renderers, boolean drawBackground, boolean showToolTips) {
+ super(x, y, renderers, drawBackground, showToolTips);
}
- protected List<String> getExtraToolTips(ItemStack stack) {
- return Collections.emptyList();
- }
-
- protected String getItemCountOverlay(ItemStack currentStack) {
- return "";
- }
-
- public ItemStack getCurrentStack() {
- if (itemList.size() == 0)
- return new ItemStack(Items.AIR);
- return itemList.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) itemList.size()) / 1f));
- }
-
- public void setItemList(List<ItemStack> itemList) {
- this.itemList = itemList;
- }
-
- @Override
- public Rectangle getBounds() {
- return new Rectangle(this.x - 1, this.y - 1, 18, 18);
- }
-
- @Override
- public boolean mouseClicked(double mouseX, double mouseY, int button) {
- if (!clickToMoreRecipes)
- return false;
- if (getBounds().contains(mouseX, mouseY))
- if (button == 0)
- return ClientHelper.getInstance().executeRecipeKeyBind(getCurrentStack());
- else if (button == 1)
- return ClientHelper.getInstance().executeUsageKeyBind(getCurrentStack());
- return false;
- }
-
- @Override
- public boolean keyPressed(int int_1, int int_2, int int_3) {
- if (!clickToMoreRecipes)
- return false;
- if (getBounds().contains(ClientUtils.getMouseLocation()))
- if (ClientHelper.getInstance().getRecipeKeyBinding().matchesKey(int_1, int_2))
- return ClientHelper.getInstance().executeRecipeKeyBind(getCurrentStack());
- else if (ClientHelper.getInstance().getUsageKeyBinding().matchesKey(int_1, int_2))
- return ClientHelper.getInstance().executeUsageKeyBind(getCurrentStack());
- return false;
+ public ItemSlotWidget(int x, int y, List<ItemStack> itemList, boolean drawBackground, boolean showToolTips, boolean clickToMoreRecipes) {
+ super(x, y, itemList, drawBackground, showToolTips, clickToMoreRecipes);
}
-
}
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java
new file mode 100644
index 000000000..bbf0c6c08
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java
@@ -0,0 +1,203 @@
+package me.shedaniel.rei.gui.widget;
+
+import com.google.common.collect.Lists;
+import com.mojang.blaze3d.platform.GlStateManager;
+import me.shedaniel.cloth.api.ClientUtils;
+import me.shedaniel.rei.RoughlyEnoughItemsCore;
+import me.shedaniel.rei.api.ClientHelper;
+import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
+import me.shedaniel.rei.client.ScreenHelper;
+import me.shedaniel.rei.gui.renderables.ItemStackRenderer;
+import net.minecraft.client.gui.Element;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.Items;
+import net.minecraft.util.Identifier;
+import net.minecraft.util.math.MathHelper;
+
+import java.awt.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+public class SlotWidget extends HighlightableWidget {
+
+ private static final Identifier RECIPE_GUI = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
+ private List<Renderer> renderers = new LinkedList<>();
+ private boolean drawBackground, showToolTips, clickToMoreRecipes, drawHighlightedBackground;
+ private int x, y;
+ private static final ItemStackRenderer TROPICAL_FISH_RENDERABLE = Renderable.fromItemStack(Items.TROPICAL_FISH.getDefaultStack());
+
+ public SlotWidget(int x, int y, ItemStack itemStack, boolean drawBackground, boolean showToolTips) {
+ this(x, y, Collections.singletonList(itemStack), drawBackground, showToolTips);
+ }
+
+ public SlotWidget(int x, int y, Collection<ItemStack> itemList, boolean drawBackground, boolean showToolTips) {
+ this(x, y, itemList.stream().map(Renderable::fromItemStack).collect(Collectors.toList()), drawBackground, showToolTips);
+ }
+
+ public SlotWidget(int x, int y, List<Renderer> renderers, boolean drawBackground, boolean showToolTips) {
+ this.renderers = renderers;
+ this.drawBackground = drawBackground;
+ this.showToolTips = showToolTips;
+ this.x = x;
+ this.y = y;
+ this.clickToMoreRecipes = false;
+ this.drawHighlightedBackground = true;
+ }
+
+ public SlotWidget(int x, int y, List<ItemStack> itemList, boolean drawBackground, boolean showToolTips, boolean clickToMoreRecipes) {
+ this(x, y, itemList, drawBackground, showToolTips);
+ this.clickToMoreRecipes = clickToMoreRecipes;
+ }
+
+ public boolean isShowToolTips() {
+ return showToolTips;
+ }
+
+ public void setShowToolTips(boolean showToolTips) {
+ this.showToolTips = showToolTips;
+ }
+
+ public boolean isClickToMoreRecipes() {
+ return clickToMoreRecipes;
+ }
+
+ public void setClickToMoreRecipes(boolean clickToMoreRecipes) {
+ this.clickToMoreRecipes = clickToMoreRecipes;
+ }
+
+ public boolean isDrawHighlightedBackground() {
+ return drawHighlightedBackground;
+ }
+
+ public void setDrawHighlightedBackground(boolean drawHighlightedBackground) {
+ this.drawHighlightedBackground = drawHighlightedBackground;
+ }
+
+ @Override
+ public List<? extends Element> children() {
+ return Collections.emptyList();
+ }
+
+ public boolean isDrawBackground() {
+ return drawBackground;
+ }
+
+ public void setDrawBackground(boolean drawBackground) {
+ this.drawBackground = drawBackground;
+ }
+
+ @Override
+ public void render(int mouseX, int mouseY, float delta) {
+ Renderer renderer = getCurrentRenderer();
+ if (drawBackground) {
+ minecraft.getTextureManager().bindTexture(RECIPE_GUI);
+ blit(this.x - 1, this.y - 1, 0, 222, 18, 18);
+ }
+ boolean highlighted = isHighlighted(mouseX, mouseY);
+ if (drawHighlightedBackground && highlighted) {
+ GlStateManager.disableLighting();
+ GlStateManager.disableDepthTest();
+ GlStateManager.colorMask(true, true, true, false);
+ fillGradient(x, y, x + 16, y + 16, -2130706433, -2130706433);
+ GlStateManager.colorMask(true, true, true, true);
+ GlStateManager.enableLighting();
+ GlStateManager.enableDepthTest();
+ }
+ if (isCurrentRendererItem() && !getCurrentItemStack().isEmpty()) {
+ if (RoughlyEnoughItemsCore.getConfigManager().getConfig().aprilFoolsFish2019 && !highlighted)
+ renderer = TROPICAL_FISH_RENDERABLE;
+ renderer.setBlitOffset(200);
+ renderer.render(x + 8, y + 6, mouseX, mouseY, delta);
+ if (!getCurrentItemStack().isEmpty() && highlighted && showToolTips)
+ queueTooltip(getCurrentItemStack(), delta);
+ } else {
+ renderer.setBlitOffset(200);
+ renderer.render(x + 8, y + 6, mouseX, mouseY, delta);
+ }
+ }
+
+ protected void queueTooltip(ItemStack itemStack, float delta) {
+ ScreenHelper.getLastOverlay().addTooltip(QueuedTooltip.create(getTooltip(itemStack)));
+ }
+
+ protected List<String> getTooltip(ItemStack itemStack) {
+ final String modString = ClientHelper.getInstance().getFormattedModFromItem(itemStack.getItem());
+ List<String> toolTip = Lists.newArrayList(ItemListOverlay.tryGetItemStackToolTip(itemStack, true));
+ toolTip.addAll(getExtraToolTips(itemStack));
+ boolean alreadyHasMod = false;
+ for(String s : toolTip)
+ if (s.equalsIgnoreCase(modString)) {
+ alreadyHasMod = true;
+ break;
+ }
+ if (!alreadyHasMod)
+ toolTip.add(modString);
+ return toolTip;
+ }
+
+ protected List<String> getExtraToolTips(ItemStack stack) {
+ return Collections.emptyList();
+ }
+
+ protected String getItemCountOverlay(ItemStack currentStack) {
+ return "";
+ }
+
+ public ItemStack getCurrentItemStack() {
+ if (getCurrentRenderer() instanceof ItemStackRenderer)
+ return ((ItemStackRenderer) getCurrentRenderer()).getItemStack();
+ return ItemStack.EMPTY;
+ }
+
+ public Renderer getCurrentRenderer() {
+ if (renderers.size() == 0)
+ return Renderable.empty();
+ return renderers.get(MathHelper.floor((System.currentTimeMillis() / 500 % (double) renderers.size()) / 1f));
+ }
+
+ public void setItemList(List<ItemStack> itemList) {
+ this.setRenderers(itemList.stream().map(Renderable::fromItemStack).collect(Collectors.toList()));
+ }
+
+ public void setRenderers(List<Renderer> renderers) {
+ this.renderers = renderers;
+ }
+
+ @Override
+ public Rectangle getBounds() {
+ return new Rectangle(this.x - 1, this.y - 1, 18, 18);
+ }
+
+ @Override
+ public boolean mouseClicked(double mouseX, double mouseY, int button) {
+ if (!clickToMoreRecipes)
+ return false;
+ if (isCurrentRendererItem() && getBounds().contains(mouseX, mouseY))
+ if (button == 0)
+ return ClientHelper.getInstance().executeRecipeKeyBind(getCurrentItemStack());
+ else if (button == 1)
+ return ClientHelper.getInstance().executeUsageKeyBind(getCurrentItemStack());
+ return false;
+ }
+
+ public boolean isCurrentRendererItem() {
+ return getCurrentRenderer() instanceof ItemStackRenderer;
+ }
+
+ @Override
+ public boolean keyPressed(int int_1, int int_2, int int_3) {
+ if (!clickToMoreRecipes)
+ return false;
+ if (isCurrentRendererItem() && getBounds().contains(ClientUtils.getMouseLocation()))
+ if (ClientHelper.getInstance().getRecipeKeyBinding().matchesKey(int_1, int_2))
+ return ClientHelper.getInstance().executeRecipeKeyBind(getCurrentItemStack());
+ else if (ClientHelper.getInstance().getUsageKeyBinding().matchesKey(int_1, int_2))
+ return ClientHelper.getInstance().executeUsageKeyBind(getCurrentItemStack());
+ return false;
+ }
+
+}
diff --git a/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java
index b86be1927..9616922d3 100644
--- a/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java
+++ b/src/main/java/me/shedaniel/rei/gui/widget/TabWidget.java
@@ -3,7 +3,7 @@ package me.shedaniel.rei.gui.widget;
import com.mojang.blaze3d.platform.GlStateManager;
import me.shedaniel.rei.api.ClientHelper;
import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.api.Renderable;
+import me.shedaniel.rei.api.Renderer;
import me.shedaniel.rei.client.ScreenHelper;
import me.shedaniel.rei.gui.RecipeViewingScreen;
import net.minecraft.client.render.GuiLighting;
@@ -18,7 +18,7 @@ public class TabWidget extends HighlightableWidget {
public static final Identifier CHEST_GUI_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/recipecontainer.png");
public boolean shown = false, selected = false;
- public Renderable renderable;
+ public Renderer renderer;
public int id;
public RecipeViewingScreen recipeViewingWidget;
public String categoryName;
@@ -31,13 +31,13 @@ public class TabWidget extends HighlightableWidget {
this.bounds = bounds;
}
- public void setRenderable(RecipeCategory category, Renderable renderable, String categoryName, boolean selected) {
+ public void setRenderer(RecipeCategory category, Renderer renderable, String categoryName, boolean selected) {
if (renderable == null) {
shown = false;
- this.renderable = null;
+ this.renderer = null;
} else {
shown = true;
- this.renderable = renderable;
+ this.renderer = renderable;
}
this.category = category;
this.selected = selected;
@@ -56,8 +56,8 @@ public class TabWidget extends HighlightableWidget {
return shown;
}
- public Renderable getRenderable() {
- return renderable;
+ public Renderer getRenderer() {
+ return renderer;
}
@Override
@@ -72,7 +72,8 @@ public class TabWidget extends HighlightableWidget {
GuiLighting.disable();
minecraft.getTextureManager().bindTexture(CHEST_GUI_TEXTURE);
this.blit(bounds.x, bounds.y + 2, selected ? 28 : 0, 192, 28, (selected ? 30 : 27));
- renderable.render((int) bounds.getCenterX(), (int) bounds.getCenterY(), mouseX, mouseY, delta);
+ renderer.setBlitOffset(100);
+ renderer.render((int) bounds.getCenterX(), (int) bounds.getCenterY(), mouseX, mouseY, delta);
if (isHighlighted(mouseX, mouseY))
drawTooltip();
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java
index 7f40dd211..f090dc4a6 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java
@@ -2,7 +2,7 @@ package me.shedaniel.rei.plugin;
import com.mojang.blaze3d.platform.GlStateManager;
import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.gui.widget.ItemSlotWidget;
+import me.shedaniel.rei.gui.widget.SlotWidget;
import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
import me.shedaniel.rei.gui.widget.Widget;
import net.minecraft.block.Blocks;
@@ -57,14 +57,14 @@ public class DefaultBlastingCategory implements RecipeCategory<DefaultBlastingDi
}
}));
List<List<ItemStack>> input = recipeDisplay.getInput();
- widgets.add(new ItemSlotWidget(startPoint.x + 1, startPoint.y + 1, input.get(0), true, true, true));
- widgets.add(new ItemSlotWidget(startPoint.x + 1, startPoint.y + 37, recipeDisplay.getFuel(), true, true, true) {
+ widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, input.get(0), true, true, true));
+ widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 37, recipeDisplay.getFuel(), true, true, true) {
@Override
protected List<String> getExtraToolTips(ItemStack stack) {
return Arrays.asList(I18n.translate("category.rei.smelting.fuel"));
}
});
- widgets.add(new ItemSlotWidget(startPoint.x + 61, startPoint.y + 19, recipeDisplay.getOutput(), false, true, true));
+ widgets.add(new SlotWidget(startPoint.x + 61, startPoint.y + 19, recipeDisplay.getOutput(), false, true, true));
return widgets;
}
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java
index 4575d0a94..ed3c84ba0 100644
--- a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java
+++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java
@@ -2,7 +2,7 @@ package me.shedaniel.rei.plugin;
import com.mojang.blaze3d.platform.GlStateManager;
import me.shedaniel.rei.api.RecipeCategory;
-import me.shedaniel.rei.gui.widget.ItemSlotWidget;
+import me.shedaniel.rei.gui.widget.SlotWidget;
import me.shedaniel.rei.gui.widget.RecipeBaseWidget;
import me.shedaniel.rei.gui.widget.Widget;
import net.minecraft.block.Blocks;
@@ -55,32 +55,32 @@ public class DefaultBrewingCategory implements RecipeCategory<DefaultBrewingDisp
blit(startPoint.x + 44, startPoint.y + 28, 103, 163, width, 4);
}
}));
- widgets.add(new ItemSlotWidget(startPoint.x + 1, startPoint.y + 1, Arrays.asList(new ItemStack(Items.BLAZE_POWDER)), false, true, true));
- widgets.add(new ItemSlotWidget(startPoint.x + 63, startPoint.y + 1, recipeDisplay.getInput().get(0), false, true, true) {
+ widgets.add(new SlotWidget(startPoint.x + 1, startPoint.y + 1, Arrays.asList(new ItemStack(Items.BLAZE_POWDER)), false, true, true));
+ widgets.add(new SlotWidget(startPoint.x + 63, startPoint.y + 1, recipeDisplay.getInput().get(0), false, true, true) {
@Override
protected List<String> getExtraToolTips(ItemStack stack) {
return Arrays.asList(I18n.translate("category.rei.brewing.input"));
}
});
- widgets.add(new ItemSlotWidget(