diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-05-08 01:24:22 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-05-08 01:24:22 +0800 |
| commit | 33ed36eff27c1a533dacb2fa73510687f119c12b (patch) | |
| tree | b6e78fa3f8a7ccbb1331dfe9cdb84941ef04a2c9 /src/main/java/me/shedaniel | |
| parent | a5c90bb7d4748ba2da024ce468ffeeda99bf4a0f (diff) | |
| download | RoughlyEnoughItems-33ed36eff27c1a533dacb2fa73510687f119c12b.tar.gz RoughlyEnoughItems-33ed36eff27c1a533dacb2fa73510687f119c12b.tar.bz2 RoughlyEnoughItems-33ed36eff27c1a533dacb2fa73510687f119c12b.zip | |
more internal changes
Fix #56
Diffstat (limited to 'src/main/java/me/shedaniel')
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; } |
