diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-08-18 00:27:57 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-08-18 00:27:57 +0800 |
| commit | 06dd7b84849ab01417e6449b0adbb1c83e8c38e0 (patch) | |
| tree | 966c4beb26e41d3c59bc45174411b7c0f968c64a /src/main/java/me | |
| parent | 0958de019acaf28cf3324a4e2dc4715ad612353e (diff) | |
| download | RoughlyEnoughItems-06dd7b84849ab01417e6449b0adbb1c83e8c38e0.tar.gz RoughlyEnoughItems-06dd7b84849ab01417e6449b0adbb1c83e8c38e0.tar.bz2 RoughlyEnoughItems-06dd7b84849ab01417e6449b0adbb1c83e8c38e0.zip | |
I guess this is quite good
Diffstat (limited to 'src/main/java/me')
31 files changed, 140 insertions, 43 deletions
diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java index 4d57b3242..e6e8ee9ca 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsCore.java @@ -11,9 +11,9 @@ import me.shedaniel.cloth.api.ClientUtils; import me.shedaniel.cloth.hooks.ClothClientHooks; import me.shedaniel.rei.api.*; import me.shedaniel.rei.api.plugins.REIPluginV0; -import me.shedaniel.rei.impl.*; import me.shedaniel.rei.gui.ContainerScreenOverlay; import me.shedaniel.rei.gui.widget.EntryListWidget; +import me.shedaniel.rei.impl.*; import me.shedaniel.rei.listeners.RecipeBookButtonWidgetHooks; import me.shedaniel.rei.listeners.RecipeBookGuiHooks; import net.fabricmc.api.ClientModInitializer; diff --git a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java index 8fd0f5030..d906de774 100644 --- a/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java +++ b/src/main/java/me/shedaniel/rei/RoughlyEnoughItemsNetwork.java @@ -33,7 +33,6 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { public static final Identifier CREATE_ITEMS_MESSAGE_PACKET = new Identifier("roughlyenoughitems", "ci_msg"); public static final Identifier MOVE_ITEMS_PACKET = new Identifier("roughlyenoughitems", "move_items"); public static final Identifier NOT_ENOUGH_ITEMS_PACKET = new Identifier("roughlyenoughitems", "og_not_enough"); - // public static final UUID CRAFTING_TABLE_MOVE = UUID.fromString("190c2b2d-d1f6-4149-a4a8-62860189403e"); @Override public void onInitialize() { @@ -59,12 +58,10 @@ public class RoughlyEnoughItemsNetwork implements ModInitializer { player.addChatMessage(new TranslatableText("text.rei.failed_cheat_items"), false); }); ServerSidePacketRegistry.INSTANCE.register(MOVE_ITEMS_PACKET, (packetContext, packetByteBuf) -> { - // UUID type = packetByteBuf.readUuid(); Identifier category = packetByteBuf.readIdentifier(); ServerPlayerEntity player = (ServerPlayerEntity) packetContext.getPlayer(); Container container = player.container; PlayerContainer playerContainer = player.playerContainer; - // if (type.equals(CRAFTING_TABLE_MOVE)) { try { boolean shift = packetByteBuf.readBoolean(); Map<Integer, List<ItemStack>> input = Maps.newHashMap(); diff --git a/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java b/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java index 44bc4f8d2..cec7afa74 100644 --- a/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java +++ b/src/main/java/me/shedaniel/rei/api/AutoTransferHandler.java @@ -55,6 +55,8 @@ public interface AutoTransferHandler { boolean isApplicable(); String getErrorKey(); + + IntList getIntegers(); } public interface Context { @@ -125,6 +127,11 @@ public interface AutoTransferHandler { public String getErrorKey() { return errorKey; } + + @Override + public IntList getIntegers() { + return integers; + } } public final class ContextImpl implements Context { diff --git a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java index 1e71d7c00..2c27b632d 100644 --- a/src/main/java/me/shedaniel/rei/api/RecipeCategory.java +++ b/src/main/java/me/shedaniel/rei/api/RecipeCategory.java @@ -5,12 +5,12 @@ package me.shedaniel.rei.api; -import me.shedaniel.rei.impl.ScreenHelper; import me.shedaniel.rei.gui.RecipeViewingScreen; import me.shedaniel.rei.gui.renderers.RecipeRenderer; import me.shedaniel.rei.gui.widget.CategoryBaseWidget; import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import me.shedaniel.rei.gui.widget.Widget; +import me.shedaniel.rei.impl.ScreenHelper; import net.minecraft.client.gui.DrawableHelper; import net.minecraft.util.Identifier; diff --git a/src/main/java/me/shedaniel/rei/api/Renderer.java b/src/main/java/me/shedaniel/rei/api/Renderer.java index 322e45106..eb327cef1 100644 --- a/src/main/java/me/shedaniel/rei/api/Renderer.java +++ b/src/main/java/me/shedaniel/rei/api/Renderer.java @@ -62,6 +62,7 @@ public abstract class Renderer extends DrawableHelper { public static ItemStackRenderer fromItemStack(ItemStack stack) { return fromItemStackSupplier(() -> stack); } + public static FluidRenderer fromFluid(Fluid fluid) { return new FluidRenderer() { @Override diff --git a/src/main/java/me/shedaniel/rei/api/TransferRecipeCategory.java b/src/main/java/me/shedaniel/rei/api/TransferRecipeCategory.java new file mode 100644 index 000000000..71ecc877f --- /dev/null +++ b/src/main/java/me/shedaniel/rei/api/TransferRecipeCategory.java @@ -0,0 +1,16 @@ +/* + * Roughly Enough Items by Danielshe. + * Licensed under the MIT License. + */ + +package me.shedaniel.rei.api; + +import it.unimi.dsi.fastutil.ints.IntList; +import me.shedaniel.rei.gui.widget.Widget; + +import java.awt.*; +import java.util.List; + +public interface TransferRecipeCategory<T extends RecipeDisplay> extends RecipeCategory<T> { + void renderRedSlots(List<Widget> widgets, Rectangle bounds, T display, IntList redSlots); +} diff --git a/src/main/java/me/shedaniel/rei/api/TransferRecipeDisplay.java b/src/main/java/me/shedaniel/rei/api/TransferRecipeDisplay.java index becd280f8..3e7ed1bc8 100644 --- a/src/main/java/me/shedaniel/rei/api/TransferRecipeDisplay.java +++ b/src/main/java/me/shedaniel/rei/api/TransferRecipeDisplay.java @@ -1,3 +1,8 @@ +/* + * Roughly Enough Items by Danielshe. + * Licensed under the MIT License. + */ + package me.shedaniel.rei.api; import me.shedaniel.rei.server.ContainerInfo; diff --git a/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java index 1063cbbd8..6ffbaebd2 100644 --- a/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/PreRecipeViewingScreen.java @@ -10,11 +10,11 @@ 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.impl.ScreenHelper; import me.shedaniel.rei.gui.config.RecipeScreenType; import me.shedaniel.rei.gui.widget.ButtonWidget; import me.shedaniel.rei.gui.widget.Widget; import me.shedaniel.rei.gui.widget.WidgetWithBounds; +import me.shedaniel.rei.impl.ScreenHelper; import me.zeroeightsix.fiber.exception.FiberException; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; diff --git a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java index 7d980c9d4..51162cf08 100644 --- a/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/RecipeViewingScreen.java @@ -10,8 +10,8 @@ import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.cloth.api.ClientUtils; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.*; -import me.shedaniel.rei.impl.ScreenHelper; import me.shedaniel.rei.gui.widget.*; +import me.shedaniel.rei.impl.ScreenHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.Element; import net.minecraft.client.gui.screen.Screen; @@ -281,7 +281,7 @@ public class RecipeViewingScreen extends Screen { List<Widget> setupDisplay = selectedCategory.setupDisplay(displaySupplier, displayBounds); this.widgets.addAll(setupDisplay); if (supplier.isPresent() && supplier.get().get(displayBounds) != null) - this.widgets.add(new AutoCraftingButtonWidget(supplier.get().get(displayBounds), supplier.get().getButtonText(), displaySupplier, setupDisplay)); + this.widgets.add(new AutoCraftingButtonWidget(displayBounds, supplier.get().get(displayBounds), supplier.get().getButtonText(), displaySupplier, setupDisplay, selectedCategory)); } if (choosePageActivated) recipeChoosePageWidget = new RecipeChoosePageWidget(this, page, getTotalPages(selectedCategory)); diff --git a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java index 2a26605aa..40bf80d91 100644 --- a/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/VillagerRecipeViewingScreen.java @@ -132,7 +132,7 @@ public class VillagerRecipeViewingScreen extends Screen { this.widgets.addAll(setupDisplay); Optional<ButtonAreaSupplier> supplier = RecipeHelper.getInstance().getSpeedCraftButtonArea(category); if (supplier.isPresent() && supplier.get().get(recipeBounds) != null) - this.widgets.add(new AutoCraftingButtonWidget(supplier.get().get(recipeBounds), supplier.get().getButtonText(), () -> display, setupDisplay)); + this.widgets.add(new AutoCraftingButtonWidget(recipeBounds, supplier.get().get(recipeBounds), supplier.get().getButtonText(), () -> display, setupDisplay, category)); int index = 0; for (RecipeDisplay recipeDisplay : categoryMap.get(category)) { @@ -270,7 +270,7 @@ public class VillagerRecipeViewingScreen extends Screen { if (scrollBarAlphaFuture == 0) scrollBarAlphaFuture = 1f; if (System.currentTimeMillis() - scrollBarAlphaFutureTime > 300f) - scrollBarAlphaFutureTime = System.currentTimeMillis(); + scrollBarAlphaFutureTime = System.currentTimeMillis(); return true; } for (Element listener : children()) diff --git a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java index d73941d79..e67d1361a 100644 --- a/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java +++ b/src/main/java/me/shedaniel/rei/gui/credits/CreditsScreen.java @@ -8,8 +8,8 @@ package me.shedaniel.rei.gui.credits; import com.google.common.collect.Lists; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import me.shedaniel.rei.impl.ScreenHelper; import me.shedaniel.rei.gui.credits.CreditsEntryListWidget.CreditsItem; +import me.shedaniel.rei.impl.ScreenHelper; import net.fabricmc.loader.api.FabricLoader; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; diff --git a/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java b/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java index 79b3f5528..0387b79a6 100644 --- a/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java +++ b/src/main/java/me/shedaniel/rei/gui/renderers/ItemStackRenderer.java @@ -10,9 +10,9 @@ import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.ClientHelper; import me.shedaniel.rei.api.Renderer; -import me.shedaniel.rei.impl.ScreenHelper; import me.shedaniel.rei.gui.widget.EntryListWidget; import me.shedaniel.rei.gui.widget.QueuedTooltip; +import me.shedaniel.rei.impl.ScreenHelper; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.render.item.ItemRenderer; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java index adcaacd8b..d4d5e1b6c 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/AutoCraftingButtonWidget.java @@ -6,9 +6,8 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; -import me.shedaniel.rei.api.AutoTransferHandler; -import me.shedaniel.rei.api.RecipeDisplay; -import me.shedaniel.rei.api.RecipeHelper; +import it.unimi.dsi.fastutil.ints.IntList; +import me.shedaniel.rei.api.*; import me.shedaniel.rei.impl.ScreenHelper; import net.minecraft.client.gui.screen.ingame.AbstractContainerScreen; import net.minecraft.client.resource.language.I18n; @@ -28,15 +27,19 @@ public class AutoCraftingButtonWidget extends ButtonWidget { private String errorTooltip; private List<Widget> setupDisplay; private AbstractContainerScreen<?> containerScreen; - private boolean visible = false; + private boolean visible = false; + private RecipeCategory<?> category; + private Rectangle displayBounds; - public AutoCraftingButtonWidget(Rectangle rectangle, String text, Supplier<RecipeDisplay> displaySupplier, List<Widget> setupDisplay) { + public AutoCraftingButtonWidget(Rectangle displayBounds, Rectangle rectangle, String text, Supplier<RecipeDisplay> displaySupplier, List<Widget> setupDisplay, RecipeCategory<?> recipeCategory) { super(rectangle, text); + this.displayBounds = displayBounds; this.displaySupplier = () -> displaySupplier.get(); Optional<Identifier> recipe = displaySupplier.get().getRecipeLocation(); extraTooltip = recipe.isPresent() ? I18n.translate("text.rei.recipe_id", Formatting.GRAY.toString(), recipe.get().toString()) : ""; this.containerScreen = ScreenHelper.getLastContainerScreen(); this.setupDisplay = setupDisplay; + this.category = recipeCategory; } @Override @@ -60,6 +63,7 @@ public class AutoCraftingButtonWidget extends ButtonWidget { String error = null; int color = 0; visible = false; + IntList redSlots = null; AutoTransferHandler.Context context = AutoTransferHandler.Context.create(false, containerScreen, displaySupplier.get()); for (AutoTransferHandler autoTransferHandler : RecipeHelper.getInstance().getSortedAutoCraftingHandler()) { try { @@ -73,13 +77,19 @@ public class AutoCraftingButtonWidget extends ButtonWidget { } else if (error == null) { error = result.getErrorKey(); color = result.getColor(); + redSlots = result.getIntegers(); } } catch (Exception e) { e.printStackTrace(); } } - if (!visible) + if (!visible) { enabled = false; + error = "error.rei.no.handlers.applicable"; + } + if (isHovered(mouseX, mouseY) && category instanceof TransferRecipeCategory && redSlots != null) { + ((TransferRecipeCategory<RecipeDisplay>) category).renderRedSlots(setupDisplay, displayBounds, displaySupplier.get(), redSlots); + } errorTooltip = error; int x = getBounds().x, y = getBounds().y, width = getBounds().width, height = getBounds().height; minecraft.getTextureManager().bindTexture(ScreenHelper.isDarkModeEnabled() ? BUTTON_LOCATION_DARK : BUTTON_LOCATION); @@ -107,7 +117,7 @@ public class AutoCraftingButtonWidget extends ButtonWidget { int colour = 14737632; if (!this.visible) { colour = 10526880; - } else if (enabled && isHovered(mouseX, mouseY)) { + } else if (enabled && isHovered(mouseX, mouseY)) { colour = 16777120; } @@ -123,7 +133,7 @@ public class AutoCraftingButtonWidget extends ButtonWidget { @Override protected int getTextureId(boolean boolean_1) { - return !visible ? 0 :boolean_1 && enabled ? 2 : 1; + return !visible ? 0 : boolean_1 && enabled ? 2 : 1; } @Override diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java index c2335d039..614fd59ff 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeBaseWidget.java @@ -7,8 +7,8 @@ package me.shedaniel.rei.gui.widget; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; -import me.shedaniel.rei.impl.ScreenHelper; import me.shedaniel.rei.gui.config.RecipeScreenType; +import me.shedaniel.rei.impl.ScreenHelper; import net.minecraft.client.render.GuiLighting; import net.minecraft.util.Identifier; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java index 113226cea..4e4ec7c30 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/RecipeChoosePageWidget.java @@ -9,9 +9,9 @@ import com.google.common.collect.Lists; import com.mojang.blaze3d.platform.GlStateManager; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.ConfigManager; +import me.shedaniel.rei.gui.RecipeViewingScreen; import me.shedaniel.rei.impl.ConfigObjectImpl; import me.shedaniel.rei.impl.ScreenHelper; -import me.shedaniel.rei.gui.RecipeViewingScreen; import me.zeroeightsix.fiber.exception.FiberException; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.GuiLighting; diff --git a/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java b/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java index 0a4ef6bd2..3d178508e 100644 --- a/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java +++ b/src/main/java/me/shedaniel/rei/gui/widget/SlotWidget.java @@ -11,9 +11,9 @@ import me.shedaniel.cloth.api.ClientUtils; import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.ClientHelper; import me.shedaniel.rei.api.Renderer; -import me.shedaniel.rei.impl.ScreenHelper; import me.shedaniel.rei.gui.renderers.FluidRenderer; import me.shedaniel.rei.gui.renderers.ItemStackRenderer; +import me.shedaniel.rei.impl.ScreenHelper; import net.minecraft.client.gui.Element; import net.minecraft.fluid.Fluid; import net.minecraft.item.ItemStack; diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java index 2e3d87325..6fc5d3a88 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultAutoCraftingPlugin.java @@ -24,7 +24,7 @@ public class DefaultAutoCraftingPlugin implements REIPluginV0 { @Override public SemanticVersion getMinimumVersion() throws VersionParsingException { - return SemanticVersion.parse("2.10"); + return SemanticVersion.parse("2.11"); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index 7e2c1a983..e0e4438c7 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -90,7 +90,7 @@ public class DefaultPlugin implements REIPluginV0 { @Override public SemanticVersion getMinimumVersion() throws VersionParsingException { - return SemanticVersion.parse("2.10"); + return SemanticVersion.parse("2.11"); } @Override diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java index d192cf39e..5bde30c99 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultServerContainerPlugin.java @@ -1,3 +1,8 @@ +/* + * Roughly Enough Items by Danielshe. + * Licensed under the MIT License. + */ + package me.shedaniel.rei.plugin; import me.shedaniel.rei.plugin.containers.CraftingContainerInfoWrapper; diff --git a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java index c12d7e809..dc779d42a 100644 --- a/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java +++ b/src/main/java/me/shedaniel/rei/plugin/autocrafting/DefaultCategoryHandler.java @@ -56,7 +56,6 @@ public class DefaultCategoryHandler implements AutoTransferHandler { if (containerScreen instanceof RecipeBookProvider) ((RecipeBookGuiHooks) ((RecipeBookProvider) containerScreen).getRecipeBookGui()).rei_getGhostSlots().reset(); PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer()); - // buf.writeUuid(RoughlyEnoughItemsNetwork.CRAFTING_TABLE_MOVE); buf.writeIdentifier(recipe.getRecipeCategory()); buf.writeBoolean(Screen.hasShiftDown()); diff --git a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java index a5a328cde..3c228c468 100644 --- a/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java +++ b/src/main/java/me/shedaniel/rei/plugin/blasting/DefaultBlastingCategory.java @@ -6,8 +6,9 @@ package me.shedaniel.rei.plugin.blasting; import com.mojang.blaze3d.platform.GlStateManager; -import me.shedaniel.rei.api.RecipeCategory; +import it.unimi.dsi.fastutil.ints.IntList; import me.shedaniel.rei.api.Renderer; +import me.shedaniel.rei.api.TransferRecipeCategory; import me.shedaniel.rei.gui.renderers.RecipeRenderer; import me.shedaniel.rei.gui.widget.RecipeBaseWidget; import me.shedaniel.rei.gui.widget.SlotWidget; @@ -15,6 +16,7 @@ import me.shedaniel.rei.gui.widget.Widget; import me.shedaniel.rei.plugin.DefaultPlugin; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.DrawableHelper; import net.minecraft.client.render.GuiLighting; import net.minecraft.client.resource.language.I18n; import net.minecraft.item.ItemStack; @@ -29,7 +31,7 @@ import java.util.LinkedList; import java.util.List; import java.util.function.Supplier; -public class DefaultBlastingCategory implements RecipeCategory<DefaultBlastingDisplay> { +public class DefaultBlastingCategory implements TransferRecipeCategory<DefaultBlastingDisplay> { @Override public Identifier getIdentifier() { @@ -81,4 +83,14 @@ public class DefaultBlastingCategory implements RecipeCategory<DefaultBlastingDi return widgets; } + @Override + public void renderRedSlots(List<Widget> widgets, Rectangle bounds, DefaultBlastingDisplay display, IntList redSlots) { + Point startPoint = new Point((int) bounds.getCenterX() - 41, (int) bounds.getCenterY() - 27); + GlStateManager.translatef(0, 0, 400); + if (redSlots.contains(0)) { + DrawableHelper.fill(startPoint.x + 1, startPoint.y + 1, startPoint.x + 1 + 16, startPoint.y + 1 + 16, 0x30ff0000); + } + GlStateManager.translatef(0, 0, -400); + } + } |
