From 678c9a6e1e7a3a1127c40ae5c3dda7ef4519bfb7 Mon Sep 17 00:00:00 2001 From: Léa Gris Date: Thu, 20 May 2021 22:57:12 +0200 Subject: feat(render): implementation-free api texture factory Provides an implementation-free API Texture factory an builder. Deprecates gregtech.api.objects.GT_*Texture.java classes Once all GregTech add-on will be migrated to the new implemnetation-free API, changes to the implementation will not affect the add-on. For now, this API allow rendering of in-world glow textures. In-inventory/hand rendering of glow texture require implementation changes that are postponed until no add-on uses the deprecated embedded implementation API. --- .../gregtech/api/interfaces/ITextureBuilder.java | 72 ++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/main/java/gregtech/api/interfaces/ITextureBuilder.java (limited to 'src/main/java/gregtech/api/interfaces/ITextureBuilder.java') diff --git a/src/main/java/gregtech/api/interfaces/ITextureBuilder.java b/src/main/java/gregtech/api/interfaces/ITextureBuilder.java new file mode 100644 index 0000000000..fde7f2e27b --- /dev/null +++ b/src/main/java/gregtech/api/interfaces/ITextureBuilder.java @@ -0,0 +1,72 @@ +package gregtech.api.interfaces; + +import gregtech.api.render.TextureFactory; +import net.minecraft.block.Block; +import net.minecraftforge.common.util.ForgeDirection; + +/** + *

This Interface defines operations to configure and build instances of the {@link ITexture} implementations

+ *

Use the {@link TextureFactory#builder()} method to get an instance of the {@link ITextureBuilder} implementation.

+ */ +public interface ITextureBuilder { + /** + * Build the {@link ITexture} + * + * @return The built {@link ITexture} + */ + ITexture build(); + + /** + * @param block The {@link Block} + * @param meta The meta value for the Block + * @return {@link ITextureBuilder} for chaining + */ + ITextureBuilder setFromBlock(Block block, int meta); + + /** + * @param side

The {@link ForgeDirection} side providing the texture

+ *

Default is {@link ForgeDirection#UNKNOWN} to use same side as rendered

+ * @return {@link ITextureBuilder} for chaining + */ + ITextureBuilder setFromSide(ForgeDirection side); + + /** + * @param iconContainers The {@link IIconContainer}s to add + * @return {@link ITextureBuilder} for chaining + */ + ITextureBuilder addIcon(IIconContainer... iconContainers); + + /** + * @param rgba The RGBA tint for this {@link ITexture} + * @return {@link ITextureBuilder} for chaining + */ + ITextureBuilder setRGBA(short[] rgba); + + /** + * @param iTextures The {@link ITexture} layers to add + * @return {@link ITextureBuilder} for chaining + */ + ITextureBuilder addLayer(ITexture... iTextures); + + /** + * Set alpha blending + * @param allowAlpha to set + * + * @return {@link ITextureBuilder} for chaining + */ + ITextureBuilder setAllowAlpha(boolean allowAlpha); + + /** + * Texture will render with same orientation as with vanilla blocks + * + * @return {@link ITextureBuilder} for chaining + */ + ITextureBuilder stdOrient(); + + /** + * Texture always render with full brightness to glow in the dark + * + * @return {@link ITextureBuilder} for chaining + */ + ITextureBuilder glow(); +} -- cgit From 6adfad819f014bbf86afa36fd32849d772b0efb4 Mon Sep 17 00:00:00 2001 From: Léa Gris Date: Fri, 21 May 2021 14:06:47 +0200 Subject: code layout --- src/main/java/gregtech/api/interfaces/ITextureBuilder.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/main/java/gregtech/api/interfaces/ITextureBuilder.java') diff --git a/src/main/java/gregtech/api/interfaces/ITextureBuilder.java b/src/main/java/gregtech/api/interfaces/ITextureBuilder.java index fde7f2e27b..8a4d715ccb 100644 --- a/src/main/java/gregtech/api/interfaces/ITextureBuilder.java +++ b/src/main/java/gregtech/api/interfaces/ITextureBuilder.java @@ -21,32 +21,32 @@ public interface ITextureBuilder { * @param meta The meta value for the Block * @return {@link ITextureBuilder} for chaining */ - ITextureBuilder setFromBlock(Block block, int meta); + ITextureBuilder setFromBlock(final Block block, final int meta); /** * @param side

The {@link ForgeDirection} side providing the texture

*

Default is {@link ForgeDirection#UNKNOWN} to use same side as rendered

* @return {@link ITextureBuilder} for chaining */ - ITextureBuilder setFromSide(ForgeDirection side); + ITextureBuilder setFromSide(final ForgeDirection side); /** * @param iconContainers The {@link IIconContainer}s to add * @return {@link ITextureBuilder} for chaining */ - ITextureBuilder addIcon(IIconContainer... iconContainers); + ITextureBuilder addIcon(final IIconContainer... iconContainers); /** * @param rgba The RGBA tint for this {@link ITexture} * @return {@link ITextureBuilder} for chaining */ - ITextureBuilder setRGBA(short[] rgba); + ITextureBuilder setRGBA(final short[] rgba); /** * @param iTextures The {@link ITexture} layers to add * @return {@link ITextureBuilder} for chaining */ - ITextureBuilder addLayer(ITexture... iTextures); + ITextureBuilder addLayer(final ITexture... iTextures); /** * Set alpha blending @@ -54,7 +54,7 @@ public interface ITextureBuilder { * * @return {@link ITextureBuilder} for chaining */ - ITextureBuilder setAllowAlpha(boolean allowAlpha); + ITextureBuilder setAllowAlpha(final boolean allowAlpha); /** * Texture will render with same orientation as with vanilla blocks -- cgit