package gregtech.common.fluid; import static gregtech.api.enums.GT_Values.MOD_ID; 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 java.util.Locale; import net.minecraft.block.Block; import net.minecraft.util.ResourceLocation; public class GT_FluidBuilder implements IGT_FluidBuilder { protected final String fluidName; protected String localizedName; protected ResourceLocation stillIconResourceLocation = null, flowingIconResourceLocation = null; protected short[] colorRGBA = Dyes._NULL.getRGBA(); protected Block fluidBlock = null; protected FluidState fluidState; protected int temperature; public GT_FluidBuilder(final String fluidName) { this.fluidName = fluidName; } /** * @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(MOD_ID, "fluids/fluid." + textureName); this.flowingIconResourceLocation = null; return this; } /** * @inheritDoc */ @Override public IGT_FluidBuilder withTextureFrom(final IGT_Fluid fromGTFluid) { this.stillIconResourceLocation = fromGTFluid.getStillIconResourceLocation(); this.flowingIconResourceLocation = fromGTFluid.getFlowingIconResourceLocation(); 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 (stillIconResourceLocation == null) { withTextureName(fluidName.toLowerCase(Locale.ENGLISH)); } return new GT_Fluid(this); } /** * @inheritDoc */ @Override public IGT_Fluid buildAndRegister() { if (stillIconResourceLocation == null) { withTextureName(fluidName.toLowerCase(Locale.ENGLISH)); } return build().addFluid(); } }