diff options
Diffstat (limited to 'src/main/java/me/shedaniel/rei/plugin')
6 files changed, 266 insertions, 2 deletions
diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java new file mode 100644 index 000000000..9e4855267 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingCategory.java @@ -0,0 +1,65 @@ +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 net.minecraft.util.math.MathHelper; + +import java.awt.*; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +public class DefaultBlastingCategory implements IRecipeCategory<DefaultBlastingDisplay> { + + private static final Identifier DISPLAY_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/display.png"); + + @Override + public Identifier getIdentifier() { + return DefaultPlugin.BLASTING; + } + + @Override + public ItemStack getCategoryIcon() { + return new ItemStack(Blocks.BLAST_FURNACE.getItem()); + } + + @Override + public String getCategoryName() { + return I18n.translate("category.rei.blasting"); + } + + @Override + public List<IWidget> setupDisplay(IMixinContainerGui containerGui, DefaultBlastingDisplay 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); + int height = MathHelper.ceil((System.currentTimeMillis() / 250 % 14d) / 1f); + drawTexturedRect(startPoint.x + 2, startPoint.y + 21 + (14 - height), 82, 77 + (14 - height), 14, height); + int width = MathHelper.ceil((System.currentTimeMillis() / 250 % 24d) / 1f); + drawTexturedRect(startPoint.x + 24, startPoint.y + 19, 82, 92, width, 17); + } + })); + 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/DefaultBlastingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java new file mode 100644 index 000000000..c5f5262aa --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBlastingDisplay.java @@ -0,0 +1,63 @@ +package me.shedaniel.rei.plugin; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.api.IRecipeDisplay; +import net.minecraft.block.entity.FurnaceBlockEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.smelting.BlastingRecipe; +import net.minecraft.recipe.smelting.SmokingRecipe; +import net.minecraft.util.Identifier; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class DefaultBlastingDisplay implements IRecipeDisplay<BlastingRecipe> { + + private BlastingRecipe display; + private List<List<ItemStack>> input; + private List<ItemStack> output; + + public DefaultBlastingDisplay(BlastingRecipe recipe) { + this.display = recipe; + 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()); + } + + @Override + public BlastingRecipe getRecipe() { + return display; + } + + @Override + public List<List<ItemStack>> getInput() { + return input; + } + + public List<ItemStack> getFuel() { + return input.get(1); + } + + @Override + public List<ItemStack> getOutput() { + return output; + } + + @Override + public Identifier getRecipeCategory() { + return DefaultPlugin.BLASTING; + } + + @Override + public List<List<ItemStack>> getRequiredItems() { + return input; + } + +} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index 62eaf185c..c2359e09b 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -5,18 +5,24 @@ import me.shedaniel.rei.client.RecipeHelper; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.crafting.ShapedRecipe; import net.minecraft.recipe.crafting.ShapelessRecipe; +import net.minecraft.recipe.smelting.BlastingRecipe; import net.minecraft.recipe.smelting.SmeltingRecipe; +import net.minecraft.recipe.smelting.SmokingRecipe; import net.minecraft.util.Identifier; public class DefaultPlugin implements IRecipePlugin { static final Identifier CRAFTING = new Identifier("roughlyenoughitems", "plugins/crafting"); static final Identifier SMELTING = new Identifier("roughlyenoughitems", "plugins/smelting"); + static final Identifier SMOKING = new Identifier("roughlyenoughitems", "plugins/smoking"); + static final Identifier BLASTING = new Identifier("roughlyenoughitems", "plugins/blasting"); @Override public void registerPluginCategories() { RecipeHelper.registerCategory(new DefaultCraftingCategory()); RecipeHelper.registerCategory(new DefaultSmeltingCategory()); + RecipeHelper.registerCategory(new DefaultSmokingCategory()); + RecipeHelper.registerCategory(new DefaultBlastingCategory()); } @Override @@ -28,6 +34,10 @@ public class DefaultPlugin implements IRecipePlugin { RecipeHelper.registerRecipe(CRAFTING, new DefaultShapedDisplay((ShapedRecipe) value)); else if (value instanceof SmeltingRecipe) RecipeHelper.registerRecipe(SMELTING, new DefaultSmeltingDisplay((SmeltingRecipe) value)); + else if (value instanceof SmokingRecipe) + RecipeHelper.registerRecipe(SMOKING, new DefaultSmokingDisplay((SmokingRecipe) value)); + else if (value instanceof BlastingRecipe) + RecipeHelper.registerRecipe(BLASTING, new DefaultBlastingDisplay((BlastingRecipe) value)); } } diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java index 2b12b7603..5561daed3 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultSmeltingDisplay.java @@ -5,8 +5,6 @@ import me.shedaniel.rei.api.IRecipeDisplay; import net.minecraft.block.entity.FurnaceBlockEntity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.crafting.ShapelessRecipe; import net.minecraft.recipe.smelting.SmeltingRecipe; import net.minecraft.util.Identifier; diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java new file mode 100644 index 000000000..dda60ba4b --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingCategory.java @@ -0,0 +1,65 @@ +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 net.minecraft.util.math.MathHelper; + +import java.awt.*; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +public class DefaultSmokingCategory implements IRecipeCategory<DefaultSmokingDisplay> { + + private static final Identifier DISPLAY_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/display.png"); + + @Override + public Identifier getIdentifier() { + return DefaultPlugin.SMOKING; + } + + @Override + public ItemStack getCategoryIcon() { + return new ItemStack(Blocks.SMOKER.getItem()); + } + + @Override + public String getCategoryName() { + return I18n.translate("category.rei.smoking"); + } + + @Override + public List<IWidget> setupDisplay(IMixinContainerGui containerGui, DefaultSmokingDisplay 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); + int height = MathHelper.ceil((System.currentTimeMillis() / 250 % 14d) / 1f); + drawTexturedRect(startPoint.x + 2, startPoint.y + 21 + (14 - height), 82, 77 + (14 - height), 14, height); + int width = MathHelper.ceil((System.currentTimeMillis() / 250 % 24d) / 1f); + drawTexturedRect(startPoint.x + 24, startPoint.y + 19, 82, 92, width, 17); + } + })); + 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/DefaultSmokingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingDisplay.java new file mode 100644 index 000000000..0961cb0ad --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultSmokingDisplay.java @@ -0,0 +1,63 @@ +package me.shedaniel.rei.plugin; + +import com.google.common.collect.Lists; +import me.shedaniel.rei.api.IRecipeDisplay; +import net.minecraft.block.entity.FurnaceBlockEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.smelting.SmeltingRecipe; +import net.minecraft.recipe.smelting.SmokingRecipe; +import net.minecraft.util.Identifier; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class DefaultSmokingDisplay implements IRecipeDisplay<SmokingRecipe> { + + private SmokingRecipe display; + private List<List<ItemStack>> input; + private List<ItemStack> output; + + public DefaultSmokingDisplay(SmokingRecipe recipe) { + this.display = recipe; + 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()); + } + + @Override + public SmokingRecipe getRecipe() { + return display; + } + + @Override + public List<List<ItemStack>> getInput() { + return input; + } + + public List<ItemStack> getFuel() { + return input.get(1); + } + + @Override + public List<ItemStack> getOutput() { + return output; + } + + @Override + public Identifier getRecipeCategory() { + return DefaultPlugin.SMOKING; + } + + @Override + public List<List<ItemStack>> getRequiredItems() { + return input; + } + +} |
