package gregtech.common.fluid; import static gregtech.api.enums.Mods.GregTech; import java.util.Locale; import javax.annotation.Nonnull; import net.minecraft.block.Block; import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.Fluid; import gregtech.api.enums.Dyes; import gregtech.api.enums.FluidState; import gregtech.api.interfaces.fluid.IGT_Fluid; import gregtech.api.interfaces.fluid.IGT_FluidBuilder; import gregtech.api.interfaces.fluid.IGT_RegisteredFluid; public class GT_FluidBuilder implements IGT_FluidBuilder { final String fluidName; String localizedName; ResourceLocation stillIconResourceLocation = null, flowingIconResourceLocation = null; short[] colorRGBA = Dyes._NULL.getRGBA(); Block fluidBlock = null; FluidState fluidState; int temperature; IIcon stillIcon; IIcon flowingIcon; Fluid iconsFrom; public GT_FluidBuilder(final String fluidName) { this.fluidName = fluidName.toLowerCase(Locale.ENGLISH); } /** * @inheritDoc */ @Override public IGT_FluidBuilder withColorRGBA(final short[] colorRGBA) { this.colorRGBA = colorRGBA; return this; } /** * @inheritDoc */ @Override public IGT_FluidBuilder withLocalizedName(final String localizedName) { this.localizedName = localizedName; return this; } /** * @inheritDoc */ @Override public IGT_FluidBuilder withStateAndTemperature(final FluidState fluidState, final int temperature) { this.fluidState = fluidState; this.temperature = temperature; return this; } /** * @inheritDoc */ @Override public IGT_FluidBuilder withStillIconResourceLocation(final ResourceLocation stillIconResourceLocation) { this.stillIconResourceLocation = stillIconResourceLocation; return this; } /** * @inheritDoc */ @Override public IGT_FluidBuilder withFlowingIconResourceLocation(final ResourceLocation flowingIconResourceLocation) { this.flowingIconResourceLocation = flowingIconResourceLocation; return this; } /** * @inheritDoc */ @Override public IGT_FluidBuilder withTextureName(final String textureName) { this.stillIconResourceLocation = new ResourceLocation(GregTech.ID, "fluids/fluid." + textureName); this.flowingIconResourceLocation = null; return this; } /** * @inheritDoc */ @Override public IGT_FluidBuilder withIconsFrom(@Nonnull final Fluid fromFluid) { this.iconsFrom = fromFluid; return this; } /** * @inheritDoc */ @Override public IGT_FluidBuilder withFluidBlock(final Block fluidBlock) { this.fluidBlock = fluidBlock; return this; } /** * @inheritDoc */ @Override public IGT_FluidBuilder withTextures(final ResourceLocation stillIconResourceLocation, final ResourceLocation flowingIconResourceLocation) { this.stillIconResourceLocation = stillIconResourceLocation; this.flowingIconResourceLocation = flowingIconResourceLocation; return this; } /** * @inheritDoc */ @Override public IGT_Fluid build() { if (colorRGBA == null) { colorRGBA = Dyes._NULL.getRGBA(); } if (stillIconResourceLocation == null) { withTextureName(fluidName.toLowerCase(Locale.ENGLISH)); } if (localizedName == null) { localizedName = fluidName; } return new GT_Fluid(this); } /** * @inheritDoc */ @Override public IGT_RegisteredFluid buildAndRegister() { return build().addFluid(); } }