diff options
| author | Unknown <shekwancheung0528@gmail.com> | 2019-01-12 21:28:36 +0800 |
|---|---|---|
| committer | Unknown <shekwancheung0528@gmail.com> | 2019-01-12 21:28:36 +0800 |
| commit | dfa3067117e96aa630a88952f0e5d4535bee8bf3 (patch) | |
| tree | 21550ef69e146b18158be0c49a2a7fcf581bcc90 /src/main/java/me/shedaniel/rei/plugin | |
| parent | 936dc5f6dc09ad9a552728f9db06f11b4828bad2 (diff) | |
| download | RoughlyEnoughItems-dfa3067117e96aa630a88952f0e5d4535bee8bf3.tar.gz RoughlyEnoughItems-dfa3067117e96aa630a88952f0e5d4535bee8bf3.tar.bz2 RoughlyEnoughItems-dfa3067117e96aa630a88952f0e5d4535bee8bf3.zip | |
Basic Config
Diffstat (limited to 'src/main/java/me/shedaniel/rei/plugin')
4 files changed, 151 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/plugin/BrewingRecipe.java b/src/main/java/me/shedaniel/rei/plugin/BrewingRecipe.java new file mode 100644 index 000000000..b4bcdb39a --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/BrewingRecipe.java @@ -0,0 +1,17 @@ +package me.shedaniel.rei.plugin; + +import net.minecraft.item.Item; +import net.minecraft.recipe.Ingredient; + +public class BrewingRecipe { + + public final Item input; + public final Ingredient ingredient; + public final Item output; + + public BrewingRecipe(Item object_1, Ingredient ingredient_1, Item object_2) { + this.input = object_1; + this.ingredient = ingredient_1; + this.output = object_2; + } +}
\ No newline at end of file diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java new file mode 100644 index 000000000..1f28e1ce1 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingCategory.java @@ -0,0 +1,66 @@ +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.item.Items; +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 DefaultBrewingCategory implements IRecipeCategory<DefaultBrewingDisplay> { + + private static final Identifier DISPLAY_TEXTURE = new Identifier("roughlyenoughitems", "textures/gui/display.png"); + + @Override + public Identifier getIdentifier() { + return DefaultPlugin.BREWING; + } + + @Override + public ItemStack getCategoryIcon() { + return new ItemStack(Blocks.BREWING_STAND); + } + + @Override + public String getCategoryName() { + return I18n.translate("category.rei.brewing"); + } + + @Override + public List<IWidget> setupDisplay(IMixinContainerGui containerGui, DefaultBrewingDisplay recipeDisplay, Rectangle bounds) { + Point startPoint = new Point((int) bounds.getCenterX() - 52, (int) bounds.getCenterY() - 29); + 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, 108, 103, 59); + int width = MathHelper.ceil((System.currentTimeMillis() / 250 % 18d) / 1f); + drawTexturedRect(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, containerGui, true)); + widgets.add(new ItemSlotWidget(startPoint.x + 63, startPoint.y + 1, recipeDisplay.getInput().get(0), false, true, containerGui, true)); + widgets.add(new ItemSlotWidget(startPoint.x + 40, startPoint.y + 1, recipeDisplay.getInput().get(1), false, true, containerGui, true)); + widgets.add(new ItemSlotWidget(startPoint.x + 40, startPoint.y + 35, recipeDisplay.getOutput(0), false, true, containerGui, true)); + widgets.add(new ItemSlotWidget(startPoint.x + 63, startPoint.y + 42, recipeDisplay.getOutput(1), false, true, containerGui, true)); + widgets.add(new ItemSlotWidget(startPoint.x + 86, startPoint.y + 35, recipeDisplay.getOutput(2), false, true, containerGui, true)); + return widgets; + } + +} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java new file mode 100644 index 000000000..1b0057e11 --- /dev/null +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultBrewingDisplay.java @@ -0,0 +1,54 @@ +package me.shedaniel.rei.plugin; + +import me.shedaniel.rei.api.IRecipeDisplay; +import net.minecraft.block.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; +import net.minecraft.util.Identifier; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class DefaultBrewingDisplay implements IRecipeDisplay { + + private ItemStack input, output; + private Ingredient reactant; + + public DefaultBrewingDisplay(ItemStack input, Ingredient reactant, ItemStack output) { + this.input = input; + this.reactant = reactant; + this.output = output; + } + + @Override + public Recipe getRecipe() { + return null; + } + + @Override + public List<List<ItemStack>> getInput() { + return Arrays.asList(Arrays.asList(input), Arrays.asList(reactant.getStackArray())); + } + + @Override + public List<ItemStack> getOutput() { + return Arrays.asList(output); + } + + @Override + public Identifier getRecipeCategory() { + return DefaultPlugin.BREWING; + } + + public List<ItemStack> getOutput(int slot) { + List<ItemStack> stack = new ArrayList<>(); + for(int i = 0; i < slot * 2; i++) + stack.add(new ItemStack(Blocks.AIR)); + for(int i = 0; i < 6 - slot * 2; i++) + stack.addAll(getOutput()); + return stack; + } + +} diff --git a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java index c2359e09b..6b9b6341f 100644 --- a/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java +++ b/src/main/java/me/shedaniel/rei/plugin/DefaultPlugin.java @@ -1,5 +1,7 @@ package me.shedaniel.rei.plugin; +import com.google.common.collect.Lists; +import me.shedaniel.rei.RoughlyEnoughItemsCore; import me.shedaniel.rei.api.IRecipePlugin; import me.shedaniel.rei.client.RecipeHelper; import net.minecraft.recipe.Recipe; @@ -10,12 +12,21 @@ import net.minecraft.recipe.smelting.SmeltingRecipe; import net.minecraft.recipe.smelting.SmokingRecipe; import net.minecraft.util.Identifier; +import java.util.List; + 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"); + static final Identifier BREWING = new Identifier("roughlyenoughitems", "plugins/brewing"); + + static final List<DefaultBrewingDisplay> BREWING_DISPLAYS = Lists.newArrayList(); + + public static void registerBrewingDisplay(DefaultBrewingDisplay display) { + BREWING_DISPLAYS.add(display); + } @Override public void registerPluginCategories() { @@ -23,6 +34,7 @@ public class DefaultPlugin implements IRecipePlugin { RecipeHelper.registerCategory(new DefaultSmeltingCategory()); RecipeHelper.registerCategory(new DefaultSmokingCategory()); RecipeHelper.registerCategory(new DefaultBlastingCategory()); + RecipeHelper.registerCategory(new DefaultBrewingCategory()); } @Override @@ -38,6 +50,8 @@ public class DefaultPlugin implements IRecipePlugin { RecipeHelper.registerRecipe(SMOKING, new DefaultSmokingDisplay((SmokingRecipe) value)); else if (value instanceof BlastingRecipe) RecipeHelper.registerRecipe(BLASTING, new DefaultBlastingDisplay((BlastingRecipe) value)); + BREWING_DISPLAYS.forEach(display -> RecipeHelper.registerRecipe(BREWING, display)); + RoughlyEnoughItemsCore.LOGGER.info("bad lol " + BREWING_DISPLAYS.size()); } } |
