From 3c40e25b6a89c184486318b82a7fe001d23dc672 Mon Sep 17 00:00:00 2001 From: ProfessorProspector Date: Sun, 8 Jan 2017 03:18:28 -0800 Subject: [PATCH] Centrifuge stuff --- .../techreborn/client/gui/GuiCentrifuge.java | 70 +++----- .../java/techreborn/client/gui/TRBuilder.java | 70 ++++++++ .../compat/jei/TechRebornJeiPlugin.java | 156 +++++++++--------- .../centrifuge/CentrifugeRecipeCategory.java | 6 +- .../centrifuge/CentrifugeRecipeWrapper.java | 11 +- .../techreborn/textures/gui/gui_sheet.png | Bin 11347 -> 11518 bytes 6 files changed, 179 insertions(+), 134 deletions(-) diff --git a/src/main/java/techreborn/client/gui/GuiCentrifuge.java b/src/main/java/techreborn/client/gui/GuiCentrifuge.java index 2f5fb68f9..97531f095 100644 --- a/src/main/java/techreborn/client/gui/GuiCentrifuge.java +++ b/src/main/java/techreborn/client/gui/GuiCentrifuge.java @@ -1,30 +1,19 @@ package techreborn.client.gui; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.renderer.GlStateManager; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.translation.I18n; - import techreborn.client.container.builder.ContainerBuilder; import techreborn.tiles.TileCentrifuge; -public class GuiCentrifuge extends GuiContainer { +public class GuiCentrifuge extends GuiBase { - public static final ResourceLocation texture = new ResourceLocation("techreborn", - "textures/gui/industrial_centrifuge.png"); + TileCentrifuge tile; - TileCentrifuge centrifuge; - - public GuiCentrifuge(final EntityPlayer player, final TileCentrifuge tileCentrifuge) { - super(new ContainerBuilder("centrifuge").player(player.inventory).inventory(8, 84).hotbar(8, 142).addInventory() - .tile(tileCentrifuge).slot(0, 80, 35).slot(1, 50, 5).outputSlot(2, 80, 5).outputSlot(3, 110, 35) - .outputSlot(4, 80, 65).outputSlot(5, 50, 35).energySlot(6, 8, 51).upgradeSlot(7, 152, 8) - .upgradeSlot(8, 152, 26).upgradeSlot(9, 152, 44).upgradeSlot(10, 152, 62).syncEnergyValue() - .syncCrafterValue().addInventory().create()); - this.xSize = 176; - this.ySize = 167; - this.centrifuge = tileCentrifuge; + public GuiCentrifuge(final EntityPlayer player, final TileCentrifuge tile) { + super(player, tile, new ContainerBuilder("centrifuge").player(player.inventory).inventory().hotbar().addInventory() + .tile(tile).slot(0, 40, 34).slot(1, 40, 54).outputSlot(2, 82, 44).outputSlot(3, 101, 25) + .outputSlot(4, 120, 44).outputSlot(5, 101, 63).energySlot(6, 8, 72).syncEnergyValue() + .syncCrafterValue().addInventory().create()); + this.tile = tile; } @Override @@ -35,38 +24,29 @@ public class GuiCentrifuge extends GuiContainer { } @Override - protected void drawGuiContainerBackgroundLayer(final float p_146976_1_, final int p_146976_2_, final int p_146976_3_) { - GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); - this.mc.getTextureManager().bindTexture(GuiCentrifuge.texture); - final int k = (this.width - this.xSize) / 2; - final int l = (this.height - this.ySize) / 2; - this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); + protected void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) { + super.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + Layer layer = Layer.BACKGROUND; - int j = 0; + drawSlot(8, 72, layer); - j = this.centrifuge.getProgressScaled(11); - if (j > 0) { - this.drawTexturedModalRect(k + 83, l + 23 + 10 - j, 177, 15 + 10 - j, 10, j); - this.drawTexturedModalRect(k + 98, l + 38, 177, 51, j, 10); - this.drawTexturedModalRect(k + 83, l + 53, 177, 39, 10, j); - this.drawTexturedModalRect(k + 68 + 10 - j, l + 38, 177 + 10 - j, 27, j, 10); - } + drawSlot(40, 34, layer); + drawSlot(40, 54, layer); - j = this.centrifuge.getEnergyScaled(12); + drawSlot(82, 44, layer); + drawSlot(101, 25, layer); + drawSlot(120, 44, layer); + drawSlot(101, 63, layer); - if (j > 0) { - this.drawTexturedModalRect(k + 9, l + 32 + 12 - j, 176, 12 - j, 14, j + 2); - } + builder.drawJEIButton(this, 150, 4, mouseX, mouseY, layer); } @Override - protected void drawGuiContainerForegroundLayer(final int p_146979_1_, final int p_146979_2_) { - final String namePt1 = I18n.translateToLocal("tile.techreborn.industrialBlock.name"); - final String namePt2 = I18n.translateToLocal("tile.techreborn.centrifuge.name").replace(namePt1 + " ", ""); - this.fontRendererObj.drawString(namePt1, 98, 6, 4210752); - this.fontRendererObj.drawString(namePt2, 98, 14, 4210752); - this.fontRendererObj.drawString(I18n.translateToLocalFormatted("container.inventory", new Object[0]), 8, - this.ySize - 96 + 2, 4210752); - this.fontRendererObj.drawString(this.centrifuge.getProgressScaled(100) + "%", 98, this.ySize - 96 + 2, 4210752); + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { + super.drawGuiContainerForegroundLayer(mouseX, mouseY); + Layer layer = Layer.FOREGROUND; + + builder.drawProgressBar(this, tile.getProgressScaled(100), 100, 61, 47, mouseX, mouseY, TRBuilder.ProgressDirection.RIGHT, layer); + builder.drawMultiEnergyBar(this, 9, 18, (int) tile.getEnergy(), (int) tile.getMaxPower(), mouseX, mouseY, 0, layer); } } diff --git a/src/main/java/techreborn/client/gui/TRBuilder.java b/src/main/java/techreborn/client/gui/TRBuilder.java index b969e713b..df6dd0c69 100644 --- a/src/main/java/techreborn/client/gui/TRBuilder.java +++ b/src/main/java/techreborn/client/gui/TRBuilder.java @@ -60,11 +60,62 @@ public class TRBuilder extends GuiBuilder { gui.addPowerButton(x, y, buttonID, layer); } + public void drawProgressBar(GuiBase gui, int progress, int maxProgress, int x, int y, int mouseX, int mouseY, ProgressDirection direction, GuiBase.Layer layer) { + if (layer == GuiBase.Layer.BACKGROUND) { + x += gui.getGuiLeft(); + y += gui.getGuiTop(); + } + if (layer == GuiBase.Layer.FOREGROUND) { + mouseX -= gui.getGuiLeft(); + mouseY -= gui.getGuiTop(); + } + + gui.mc.getTextureManager().bindTexture(GUI_SHEET); + gui.drawTexturedModalRect(x, y, direction.x, direction.y, direction.width, direction.height); + + if (direction.equals(ProgressDirection.RIGHT)) { + int j = (int) ((double) progress / (double) maxProgress * 16); + if (j < 0) + j = 0; + gui.drawTexturedModalRect(x, y, direction.xActive, direction.yActive, j, 10); + } + + if (isInRect(x, y, direction.width, direction.height, mouseX, mouseY)) { + int percentage = percentage(maxProgress, progress); + List list = new ArrayList<>(); + list.add(getPercentageColour(percentage) + "" + percentage + "%"); + net.minecraftforge.fml.client.config.GuiUtils.drawHoveringText(list, mouseX, mouseY, gui.width, gui.height, -1, gui.mc.fontRendererObj); + GlStateManager.disableLighting(); + GlStateManager.color(1, 1, 1, 1); + } + } + + public void drawJEIButton(GuiBase gui, int x, int y, int mouseX, int mouseY, GuiBase.Layer layer) { + if (layer == GuiBase.Layer.BACKGROUND) { + x += gui.getGuiLeft(); + y += gui.getGuiTop(); + } + if (layer == GuiBase.Layer.FOREGROUND) { + mouseX -= gui.getGuiLeft(); + mouseY -= gui.getGuiTop(); + } + gui.mc.getTextureManager().bindTexture(GUI_SHEET); + if (isInRect(x, y, 20, 12, mouseX, mouseY)) { + gui.drawTexturedModalRect(x, y, 184, 82, 20, 12); + } else { + gui.drawTexturedModalRect(x, y, 184, 70, 20, 12); + } + } + public void drawBigBlueBar(GuiBase gui, int x, int y, int value, int max, int mouseX, int mouseY, String suffix, GuiBase.Layer layer) { if (layer == GuiBase.Layer.BACKGROUND) { x += gui.getGuiLeft(); y += gui.getGuiTop(); } + if (layer == GuiBase.Layer.FOREGROUND) { + mouseX -= gui.getGuiLeft(); + mouseY -= gui.getGuiTop(); + } gui.mc.getTextureManager().bindTexture(GUI_SHEET); if (!suffix.equals("")) { suffix = " " + suffix; @@ -116,4 +167,23 @@ public class TRBuilder extends GuiBuilder { return 0; return (int) ((CurrentValue * 100.0f) / MaxValue); } + + public enum ProgressDirection { + RIGHT(84, 151, 100, 151, 16, 10)/*, DOWN(104, 171, 114, 171, 10, 16), UP(84, 171, 94, 171, 10, 16), LEFT(84, 161, 100, 161, 16, 10)*/; + public int x; + public int y; + public int xActive; + public int yActive; + public int width; + public int height; + + ProgressDirection(int x, int y, int xActive, int yActive, int width, int height) { + this.x = x; + this.y = y; + this.xActive = xActive; + this.yActive = yActive; + this.width = width; + this.height = height; + } + } } diff --git a/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java b/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java index 81b9a065c..b63694f58 100644 --- a/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java +++ b/src/main/java/techreborn/compat/jei/TechRebornJeiPlugin.java @@ -1,13 +1,16 @@ package techreborn.compat.jei; -import javax.annotation.Nonnull; - +import mezz.jei.api.BlankModPlugin; +import mezz.jei.api.IGuiHelper; +import mezz.jei.api.IJeiHelpers; +import mezz.jei.api.IModRegistry; +import mezz.jei.api.recipe.VanillaRecipeCategoryUid; +import mezz.jei.api.recipe.transfer.IRecipeTransferRegistry; +import mezz.jei.config.Config; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.util.text.translation.I18n; - import reborncore.api.recipe.RecipeHandler; - import techreborn.Core; import techreborn.api.generator.EFluidGenerator; import techreborn.api.generator.GeneratorRecipeHelper; @@ -59,17 +62,10 @@ import techreborn.items.ItemParts; import techreborn.parts.TechRebornParts; import techreborn.parts.powerCables.EnumCableType; +import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; -import mezz.jei.api.BlankModPlugin; -import mezz.jei.api.IGuiHelper; -import mezz.jei.api.IJeiHelpers; -import mezz.jei.api.IModRegistry; -import mezz.jei.api.recipe.VanillaRecipeCategoryUid; -import mezz.jei.api.recipe.transfer.IRecipeTransferRegistry; -import mezz.jei.config.Config; - @mezz.jei.api.JEIPlugin public class TechRebornJeiPlugin extends BlankModPlugin { private static void addDebugRecipes(final IModRegistry registry) { @@ -79,13 +75,13 @@ public class TechRebornJeiPlugin extends BlankModPlugin { for (int i = 0; i < 10; i++) { final int time = (int) Math.round(200 + Math.random() * 100); final AssemblingMachineRecipe assemblingMachineRecipe = new AssemblingMachineRecipe(diamondBlock, diamondBlock, - dirtBlock, time, 120); + dirtBlock, time, 120); debugRecipes.add(assemblingMachineRecipe); } for (int i = 0; i < 10; i++) { final int time = (int) Math.round(200 + Math.random() * 100); final ImplosionCompressorRecipe recipe = new ImplosionCompressorRecipe(diamondBlock, diamondBlock, dirtBlock, - dirtBlock, time, 120); + dirtBlock, time, 120); debugRecipes.add(recipe); } registry.addRecipes(debugRecipes); @@ -93,8 +89,9 @@ public class TechRebornJeiPlugin extends BlankModPlugin { @Override public void register( - @Nonnull final - IModRegistry registry) { + @Nonnull + final + IModRegistry registry) { final IJeiHelpers jeiHelpers = registry.getJeiHelpers(); final IGuiHelper guiHelper = jeiHelpers.getGuiHelper(); @@ -132,13 +129,13 @@ public class TechRebornJeiPlugin extends BlankModPlugin { jeiHelpers.getItemBlacklist().addItemToBlacklist(new ItemStack(ModFluids.BLOCK_OIL)); jeiHelpers.getItemBlacklist().addItemToBlacklist(new ItemStack(ModItems.MISSING_RECIPE_PLACEHOLDER)); - if(IC2Duplicates.deduplicate()){ - for(final IC2Duplicates duplicate : IC2Duplicates.values()){ - if(duplicate.hasIC2Stack()){ + if (IC2Duplicates.deduplicate()) { + for (final IC2Duplicates duplicate : IC2Duplicates.values()) { + if (duplicate.hasIC2Stack()) { jeiHelpers.getItemBlacklist().addItemToBlacklist(duplicate.getTrStack()); } } - if(TechRebornParts.cables != null){ + if (TechRebornParts.cables != null) { for (int i = 0; i < EnumCableType.values().length; i++) { jeiHelpers.getItemBlacklist().addItemToBlacklist(new ItemStack(TechRebornParts.cables, 1, i)); } @@ -147,7 +144,7 @@ public class TechRebornJeiPlugin extends BlankModPlugin { jeiHelpers.getItemBlacklist().addItemToBlacklist(ItemParts.getPartByName("rubberSap")); jeiHelpers.getItemBlacklist().addItemToBlacklist(ItemParts.getPartByName("electronicCircuit")); jeiHelpers.getItemBlacklist().addItemToBlacklist(ItemParts.getPartByName("advancedCircuit")); - if(!Core.worldGen.config.rubberTreeConfig.shouldSpawn){ + if (!Core.worldGen.config.rubberTreeConfig.shouldSpawn) { jeiHelpers.getItemBlacklist().addItemToBlacklist(new ItemStack(ModBlocks.RUBBER_SAPLING)); jeiHelpers.getItemBlacklist().addItemToBlacklist(new ItemStack(ModBlocks.RUBBER_LOG)); jeiHelpers.getItemBlacklist().addItemToBlacklist(new ItemStack(ModBlocks.RUBBER_PLANKS)); @@ -158,26 +155,26 @@ public class TechRebornJeiPlugin extends BlankModPlugin { } registry.addRecipeCategories(new AlloySmelterRecipeCategory(guiHelper), - new AssemblingMachineRecipeCategory(guiHelper), new BlastFurnaceRecipeCategory(guiHelper), - new CentrifugeRecipeCategory(guiHelper), new ChemicalReactorRecipeCategory(guiHelper), - new FusionReactorRecipeCategory(guiHelper), new IndustrialGrinderRecipeCategory(guiHelper), - new ImplosionCompressorRecipeCategory(guiHelper), new IndustrialElectrolyzerRecipeCategory(guiHelper), - new RollingMachineRecipeCategory(guiHelper), new VacuumFreezerRecipeCategory(guiHelper), - new GrinderRecipeCategory(guiHelper), new ExtractorRecipeCategory(guiHelper), - new CompressorRecipeCategory(guiHelper), new ScrapboxRecipeCategory(guiHelper)); + new AssemblingMachineRecipeCategory(guiHelper), new BlastFurnaceRecipeCategory(guiHelper), + new CentrifugeRecipeCategory(guiHelper), new ChemicalReactorRecipeCategory(guiHelper), + new FusionReactorRecipeCategory(guiHelper), new IndustrialGrinderRecipeCategory(guiHelper), + new ImplosionCompressorRecipeCategory(guiHelper), new IndustrialElectrolyzerRecipeCategory(guiHelper), + new RollingMachineRecipeCategory(guiHelper), new VacuumFreezerRecipeCategory(guiHelper), + new GrinderRecipeCategory(guiHelper), new ExtractorRecipeCategory(guiHelper), + new CompressorRecipeCategory(guiHelper), new ScrapboxRecipeCategory(guiHelper)); - for(final EFluidGenerator type : EFluidGenerator.values()) + for (final EFluidGenerator type : EFluidGenerator.values()) registry.addRecipeCategories(new FluidGeneratorRecipeCategory(type, guiHelper)); registry.addRecipeHandlers(new AlloySmelterRecipeHandler(jeiHelpers), - new AssemblingMachineRecipeHandler(jeiHelpers), new BlastFurnaceRecipeHandler(jeiHelpers), - new CentrifugeRecipeHandler(jeiHelpers), new ChemicalReactorRecipeHandler(jeiHelpers), - new FusionReactorRecipeHandler(), new IndustrialGrinderRecipeHandler(jeiHelpers), - new ImplosionCompressorRecipeHandler(jeiHelpers), new IndustrialElectrolyzerRecipeHandler(jeiHelpers), - new RollingMachineRecipeHandler(), new VacuumFreezerRecipeHandler(jeiHelpers), - new GrinderRecipeHandler(jeiHelpers), new ExtractorRecipeHandler(jeiHelpers), - new CompressorRecipeHandler(jeiHelpers), new ScrapboxRecipeHandler(jeiHelpers), - new FluidGeneratorRecipeHandler(jeiHelpers)); + new AssemblingMachineRecipeHandler(jeiHelpers), new BlastFurnaceRecipeHandler(jeiHelpers), + new CentrifugeRecipeHandler(jeiHelpers), new ChemicalReactorRecipeHandler(jeiHelpers), + new FusionReactorRecipeHandler(), new IndustrialGrinderRecipeHandler(jeiHelpers), + new ImplosionCompressorRecipeHandler(jeiHelpers), new IndustrialElectrolyzerRecipeHandler(jeiHelpers), + new RollingMachineRecipeHandler(), new VacuumFreezerRecipeHandler(jeiHelpers), + new GrinderRecipeHandler(jeiHelpers), new ExtractorRecipeHandler(jeiHelpers), + new CompressorRecipeHandler(jeiHelpers), new ScrapboxRecipeHandler(jeiHelpers), + new FluidGeneratorRecipeHandler(jeiHelpers)); registry.addRecipes(RecipeHandler.recipeList); registry.addRecipes(FusionReactorRecipeHelper.reactorRecipes); @@ -188,7 +185,7 @@ public class TechRebornJeiPlugin extends BlankModPlugin { registry.addRecipes(RollingMachineRecipeMaker.getRecipes(jeiHelpers)); } catch (final RuntimeException e) { Core.logHelper - .error("Could not register rolling machine recipes. JEI may have changed its internal recipe wrapper locations."); + .error("Could not register rolling machine recipes. JEI may have changed its internal recipe wrapper locations."); e.printStackTrace(); } @@ -197,118 +194,115 @@ public class TechRebornJeiPlugin extends BlankModPlugin { } registry.addDescription(ItemParts.getPartByName("rubberSap"), - I18n.translateToLocal("techreborn.desc.rubberSap")); + I18n.translateToLocal("techreborn.desc.rubberSap")); if (!ConfigTechReborn.ScrapboxDispenser) { registry.addDescription(new ItemStack(ModItems.SCRAP_BOX), - I18n.translateToLocal("techreborn.desc.scrapBoxNoDispenser")); + I18n.translateToLocal("techreborn.desc.scrapBoxNoDispenser")); } else { registry.addDescription(new ItemStack(ModItems.SCRAP_BOX), - I18n.translateToLocal("techreborn.desc.scrapBox")); + I18n.translateToLocal("techreborn.desc.scrapBox")); } registry.addRecipeClickArea(GuiAlloyFurnace.class, 80, 35, 26, 20, RecipeCategoryUids.ALLOY_SMELTER, - VanillaRecipeCategoryUid.FUEL); + VanillaRecipeCategoryUid.FUEL); registry.addRecipeClickArea(GuiAlloySmelter.class, 80, 35, 26, 20, RecipeCategoryUids.ALLOY_SMELTER); registry.addRecipeClickArea(GuiAssemblingMachine.class, 85, 34, 24, 20, RecipeCategoryUids.ASSEMBLING_MACHINE); registry.addRecipeClickArea(GuiBlastFurnace.class, 63, 36, 24, 15, RecipeCategoryUids.BLAST_FURNACE); - registry.addRecipeClickArea(GuiCentrifuge.class, 98, 37, 9, 12, RecipeCategoryUids.CENTRIFUGE); - registry.addRecipeClickArea(GuiCentrifuge.class, 68, 37, 9, 12, RecipeCategoryUids.CENTRIFUGE); - registry.addRecipeClickArea(GuiCentrifuge.class, 83, 23, 12, 9, RecipeCategoryUids.CENTRIFUGE); - registry.addRecipeClickArea(GuiCentrifuge.class, 83, 53, 12, 9, RecipeCategoryUids.CENTRIFUGE); + registry.addRecipeClickArea(GuiCentrifuge.class, 150, 4, 20, 12, RecipeCategoryUids.CENTRIFUGE); registry.addRecipeClickArea(GuiChemicalReactor.class, 73, 39, 32, 12, RecipeCategoryUids.CHEMICAL_REACTOR); registry.addRecipeClickArea(GuiFusionReactor.class, 111, 34, 27, 19, RecipeCategoryUids.FUSION_REACTOR); registry.addRecipeClickArea(GuiIndustrialGrinder.class, 50, 35, 25, 16, RecipeCategoryUids.INDUSTRIAL_GRINDER); registry.addRecipeClickArea(GuiImplosionCompressor.class, 60, 37, 24, 15, - RecipeCategoryUids.IMPLOSION_COMPRESSOR); + RecipeCategoryUids.IMPLOSION_COMPRESSOR); registry.addRecipeClickArea(GuiIndustrialElectrolyzer.class, 72, 37, 33, 14, - RecipeCategoryUids.INDUSTRIAL_ELECTROLYZER); + RecipeCategoryUids.INDUSTRIAL_ELECTROLYZER); registry.addRecipeClickArea(GuiRollingMachine.class, 89, 32, 26, 25, RecipeCategoryUids.ROLLING_MACHINE); registry.addRecipeClickArea(GuiVacuumFreezer.class, 78, 36, 24, 16, RecipeCategoryUids.VACUUM_FREEZER); registry.addRecipeClickArea(GuiGrinder.class, 78, 36, 24, 16, RecipeCategoryUids.GRINDER); registry.addRecipeClickArea(GuiExtractor.class, 78, 36, 24, 16, RecipeCategoryUids.EXTRACTOR); registry.addRecipeClickArea(GuiCompressor.class, 78, 36, 24, 16, RecipeCategoryUids.COMPRESSOR); registry.addRecipeClickArea(GuiIronFurnace.class, 78, 36, 24, 16, VanillaRecipeCategoryUid.SMELTING, - VanillaRecipeCategoryUid.FUEL); + VanillaRecipeCategoryUid.FUEL); registry.addRecipeClickArea(GuiElectricFurnace.class, 78, 36, 24, 16, VanillaRecipeCategoryUid.SMELTING); registry.addRecipeClickArea(GuiSemifluidGenerator.class, 79, 34, 18, 18, - EFluidGenerator.SEMIFLUID.getRecipeID()); + EFluidGenerator.SEMIFLUID.getRecipeID()); registry.addRecipeClickArea(GuiDieselGenerator.class, 79, 34, 18, 18, - EFluidGenerator.DIESEL.getRecipeID()); + EFluidGenerator.DIESEL.getRecipeID()); registry.addRecipeClickArea(GuiGasTurbine.class, 79, 34, 18, 18, - EFluidGenerator.GAS.getRecipeID()); + EFluidGenerator.GAS.getRecipeID()); registry.addRecipeClickArea(GuiThermalGenerator.class, 79, 34, 18, 18, - EFluidGenerator.THERMAL.getRecipeID()); + EFluidGenerator.THERMAL.getRecipeID()); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.COMPRESSOR), RecipeCategoryUids.COMPRESSOR); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.IRON_ALLOY_FURNACE), RecipeCategoryUids.ALLOY_SMELTER); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.ALLOY_SMELTER), RecipeCategoryUids.ALLOY_SMELTER); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.ASSEMBLY_MACHINE), - RecipeCategoryUids.ASSEMBLING_MACHINE); + RecipeCategoryUids.ASSEMBLING_MACHINE); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.INDUSTRIAL_BLAST_FURNACE), RecipeCategoryUids.BLAST_FURNACE); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.INDUSTRIAL_CENTRIFUGE), RecipeCategoryUids.CENTRIFUGE); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.CHEMICAL_REACTOR), - RecipeCategoryUids.CHEMICAL_REACTOR); + RecipeCategoryUids.CHEMICAL_REACTOR); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.EXTRACTOR), RecipeCategoryUids.EXTRACTOR); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.FUSION_CONTROL_COMPUTER), - RecipeCategoryUids.FUSION_REACTOR); + RecipeCategoryUids.FUSION_REACTOR); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.GRINDER), RecipeCategoryUids.GRINDER); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.IMPLOSION_COMPRESSOR), - RecipeCategoryUids.IMPLOSION_COMPRESSOR); + RecipeCategoryUids.IMPLOSION_COMPRESSOR); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.INDUSTRIAL_ELECTROLYZER), - RecipeCategoryUids.INDUSTRIAL_ELECTROLYZER); + RecipeCategoryUids.INDUSTRIAL_ELECTROLYZER); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.INDUSTRIAL_GRINDER), - RecipeCategoryUids.INDUSTRIAL_GRINDER); + RecipeCategoryUids.INDUSTRIAL_GRINDER); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.ROLLING_MACHINE), - RecipeCategoryUids.ROLLING_MACHINE); + RecipeCategoryUids.ROLLING_MACHINE); registry.addRecipeCategoryCraftingItem(new ItemStack(ModItems.SCRAP_BOX), RecipeCategoryUids.SCRAPBOX); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.SEMIFLUID_GENERATOR), - EFluidGenerator.SEMIFLUID.getRecipeID()); + EFluidGenerator.SEMIFLUID.getRecipeID()); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.GAS_TURBINE), - EFluidGenerator.GAS.getRecipeID()); + EFluidGenerator.GAS.getRecipeID()); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.DIESEL_GENERATOR), - EFluidGenerator.DIESEL.getRecipeID()); + EFluidGenerator.DIESEL.getRecipeID()); registry.addRecipeCategoryCraftingItem(new ItemStack(ModBlocks.THERMAL_GENERATOR), - EFluidGenerator.THERMAL.getRecipeID()); + EFluidGenerator.THERMAL.getRecipeID()); final IRecipeTransferRegistry recipeTransferRegistry = registry.getRecipeTransferRegistry(); recipeTransferRegistry - .addRecipeTransferHandler(ContainerAlloyFurnace.class, RecipeCategoryUids.ALLOY_SMELTER, 0, 2, 4, 36); + .addRecipeTransferHandler(ContainerAlloyFurnace.class, RecipeCategoryUids.ALLOY_SMELTER, 0, 2, 4, 36); recipeTransferRegistry - .addRecipeTransferHandler(ContainerAlloySmelter.class, RecipeCategoryUids.ALLOY_SMELTER, 0, 2, 8, 36); + .addRecipeTransferHandler(ContainerAlloySmelter.class, RecipeCategoryUids.ALLOY_SMELTER, 0, 2, 8, 36); recipeTransferRegistry - .addRecipeTransferHandler(ContainerAlloyFurnace.class, VanillaRecipeCategoryUid.FUEL, 3, 1, 4, 36); + .addRecipeTransferHandler(ContainerAlloyFurnace.class, VanillaRecipeCategoryUid.FUEL, 3, 1, 4, 36); recipeTransferRegistry - .addRecipeTransferHandler(ContainerBlastFurnace.class, RecipeCategoryUids.BLAST_FURNACE, 0, 2, 4, 36); + .addRecipeTransferHandler(ContainerBlastFurnace.class, RecipeCategoryUids.BLAST_FURNACE, 0, 2, 4, 36); recipeTransferRegistry - .addRecipeTransferHandler(ContainerFusionReactor.class, RecipeCategoryUids.FUSION_REACTOR, 0, 2, 3, 36); + .addRecipeTransferHandler(ContainerFusionReactor.class, RecipeCategoryUids.FUSION_REACTOR, 0, 2, 3, 36); recipeTransferRegistry - .addRecipeTransferHandler(ContainerIndustrialGrinder.class, RecipeCategoryUids.GRINDER, 0, 2, 6, 36); + .addRecipeTransferHandler(ContainerIndustrialGrinder.class, RecipeCategoryUids.GRINDER, 0, 2, 6, 36); recipeTransferRegistry - .addRecipeTransferHandler(ContainerImplosionCompressor.class, RecipeCategoryUids.IMPLOSION_COMPRESSOR, + .addRecipeTransferHandler(ContainerImplosionCompressor.class, RecipeCategoryUids.IMPLOSION_COMPRESSOR, 0, 2, 4, 36); recipeTransferRegistry.addRecipeTransferHandler(ContainerIndustrialElectrolyzer.class, - RecipeCategoryUids.INDUSTRIAL_ELECTROLYZER, 0, 2, 7, 36); + RecipeCategoryUids.INDUSTRIAL_ELECTROLYZER, 0, 2, 7, 36); recipeTransferRegistry - .addRecipeTransferHandler(ContainerRollingMachine.class, RecipeCategoryUids.ROLLING_MACHINE, 0, 9, 11, + .addRecipeTransferHandler(ContainerRollingMachine.class, RecipeCategoryUids.ROLLING_MACHINE, 0, 9, 11, 36); recipeTransferRegistry - .addRecipeTransferHandler(ContainerVacuumFreezer.class, RecipeCategoryUids.VACUUM_FREEZER, 0, 1, 2, 36); + .addRecipeTransferHandler(ContainerVacuumFreezer.class, RecipeCategoryUids.VACUUM_FREEZER, 0, 1, 2, 36); recipeTransferRegistry.addRecipeTransferHandler( - new BuiltContainerTransferInfo("assemblingmachine", RecipeCategoryUids.ASSEMBLING_MACHINE, 36, 2, 0, - 36)); + new BuiltContainerTransferInfo("assemblingmachine", RecipeCategoryUids.ASSEMBLING_MACHINE, 36, 2, 0, + 36)); recipeTransferRegistry.addRecipeTransferHandler( - new BuiltContainerTransferInfo("chemicalreactor", RecipeCategoryUids.CHEMICAL_REACTOR, 36, 2, 0, 36)); + new BuiltContainerTransferInfo("chemicalreactor", RecipeCategoryUids.CHEMICAL_REACTOR, 36, 2, 0, 36)); recipeTransferRegistry.addRecipeTransferHandler( - new BuiltContainerTransferInfo("centrifuge", RecipeCategoryUids.CENTRIFUGE, 36, 2, 0, 36)); + new BuiltContainerTransferInfo("centrifuge", RecipeCategoryUids.CENTRIFUGE, 36, 2, 0, 36)); recipeTransferRegistry.addRecipeTransferHandler( - new BuiltContainerTransferInfo("grinder", RecipeCategoryUids.GRINDER, 36, 1, 0, 36)); + new BuiltContainerTransferInfo("grinder", RecipeCategoryUids.GRINDER, 36, 1, 0, 36)); recipeTransferRegistry.addRecipeTransferHandler( - new BuiltContainerTransferInfo("extractor", RecipeCategoryUids.EXTRACTOR, 36, 1, 0, 36)); + new BuiltContainerTransferInfo("extractor", RecipeCategoryUids.EXTRACTOR, 36, 1, 0, 36)); recipeTransferRegistry.addRecipeTransferHandler( - new BuiltContainerTransferInfo("compressor", RecipeCategoryUids.COMPRESSOR, 36, 1, 0, 36)); + new BuiltContainerTransferInfo("compressor", RecipeCategoryUids.COMPRESSOR, 36, 1, 0, 36)); if (CompatManager.isQuantumStorageLoaded) { registry.getJeiHelpers().getItemBlacklist().addItemToBlacklist(new ItemStack(ModBlocks.QUANTUM_CHEST)); diff --git a/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeCategory.java b/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeCategory.java index 2594d76ab..fd57190c9 100644 --- a/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeCategory.java +++ b/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeCategory.java @@ -6,22 +6,22 @@ import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.ingredients.IIngredients; import mezz.jei.api.recipe.BlankRecipeCategory; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.translation.I18n; -import techreborn.client.gui.GuiCentrifuge; import techreborn.compat.jei.RecipeCategoryUids; import techreborn.compat.jei.RecipeUtil; import javax.annotation.Nonnull; public class CentrifugeRecipeCategory extends BlankRecipeCategory { + public static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/industrial_centrifuge.png"); private static final int[] INPUT_SLOTS = { 0, 1 }; private static final int[] OUTPUT_SLOTS = { 2, 3, 4, 5 }; - private final IDrawable background; private final String title; public CentrifugeRecipeCategory(IGuiHelper guiHelper) { - background = guiHelper.createDrawable(GuiCentrifuge.texture, 49, 4, 78, 78); + background = guiHelper.createDrawable(texture, 49, 4, 78, 78); title = I18n.translateToLocal("tile.techreborn.centrifuge.name"); } diff --git a/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeWrapper.java b/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeWrapper.java index 872d065f7..38645f4b6 100644 --- a/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeWrapper.java +++ b/src/main/java/techreborn/compat/jei/centrifuge/CentrifugeRecipeWrapper.java @@ -5,13 +5,14 @@ import mezz.jei.api.IJeiHelpers; import mezz.jei.api.gui.IDrawableAnimated; import mezz.jei.api.gui.IDrawableStatic; import net.minecraft.client.Minecraft; +import net.minecraft.util.ResourceLocation; import techreborn.api.recipe.machines.CentrifugeRecipe; -import techreborn.client.gui.GuiCentrifuge; import techreborn.compat.jei.BaseRecipeWrapper; import javax.annotation.Nonnull; public class CentrifugeRecipeWrapper extends BaseRecipeWrapper { + public static final ResourceLocation texture = new ResourceLocation("techreborn", "textures/gui/industrial_centrifuge.png"); private final IDrawableAnimated progressUp; private final IDrawableAnimated progressLeft; private final IDrawableAnimated progressDown; @@ -24,10 +25,10 @@ public class CentrifugeRecipeWrapper extends BaseRecipeWrapper CentrifugeRecipe baseRecipe) { super(baseRecipe); IGuiHelper guiHelper = jeiHelpers.getGuiHelper(); - IDrawableStatic progressUpStatic = guiHelper.createDrawable(GuiCentrifuge.texture, 176, 14, 12, 12); - IDrawableStatic progressLeftStatic = guiHelper.createDrawable(GuiCentrifuge.texture, 176, 26, 12, 12); - IDrawableStatic progressDownStatic = guiHelper.createDrawable(GuiCentrifuge.texture, 176, 38, 12, 12); - IDrawableStatic progressRightStatic = guiHelper.createDrawable(GuiCentrifuge.texture, 176, 50, 12, 12); + IDrawableStatic progressUpStatic = guiHelper.createDrawable(texture, 176, 14, 12, 12); + IDrawableStatic progressLeftStatic = guiHelper.createDrawable(texture, 176, 26, 12, 12); + IDrawableStatic progressDownStatic = guiHelper.createDrawable(texture, 176, 38, 12, 12); + IDrawableStatic progressRightStatic = guiHelper.createDrawable(texture, 176, 50, 12, 12); int ticksPerCycle = baseRecipe.tickTime() / 4; // speed up the animation // a bit diff --git a/src/main/resources/assets/techreborn/textures/gui/gui_sheet.png b/src/main/resources/assets/techreborn/textures/gui/gui_sheet.png index 0cbc5990f9a5f093db06f75ec547a987dce16ef8..904d3c8ddcca90152a3b2ab25684f6ce8736d217 100644 GIT binary patch literal 11518 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