<project name="BuildCraft" default="main"> <property environment="env"/> <!-- Properties --> <property name="build.dir" value="build"/> <property name="src.dir" value="."/> <property name="lang.dir" value="../buildcraft.localization"/> <property name="resources.dir" value="buildcraft_resources"/> <property name="download.dir" value="download"/> <property name="classes.dir" value="${build.dir}/classes"/> <property name="jar.dir" value="bin"/> <property name="forge.dir" value="${build.dir}/forge"/> <property name="mcp.dir" value="${forge.dir}/mcp"/> <property name="mcpsrc.dir" value="${mcp.dir}/src"/> <property name="mc.version" value="1.4.7"/> <property name="forge.version" value="6.6.0.515"/> <property name="project.version" value="3.4.2"/> <property name="forge.name" value="minecraftforge-src-${mc.version}-${forge.version}.zip"/> <available property="forge-exists" file="${download.dir}/${forge.name}"/> <condition property="out-of-date"> <not> <and> <available file="${download.dir}/${forge.name}"/> <available file="${mcpsrc.dir}"/> </and> </not> </condition> <mkdir dir="${download.dir}"/> <!-- Targets --> <!-- Clear build directory --> <target name="clean"> <delete dir="${build.dir}"/> </target> <!-- Set full version --> <target name="initialize-version" depends="version-provided,version-not-provided"> <property name="project.version.full" value="${project.version}.${build.number}"/> </target> <!-- Set unknown build number --> <target name="version-not-provided" unless="env.BUILD_NUMBER"> <property name="build.number" value="unknown"/> </target> <!-- Set build number from environment --> <target name="version-provided" if="env.BUILD_NUMBER"> <property name="build.number" value="${env.BUILD_NUMBER}"/> </target> <!-- Download necessary files --> <target name="download-files" depends="download-forge"/> <!-- Download forge (if it doesn't exist) --> <target name="download-forge" unless="forge-exists"> <get src="http://files.minecraftforge.net/${forge.name}" dest="${download.dir}" usetimestamp="True"/> </target> <!-- Setup mcp and forge --> <target name="setup" depends="download-files" if="out-of-date"> <delete dir="${forge.dir}" failonerror="false"/> <unzip dest="${forge.dir}/.." src="${download.dir}/${forge.name}"/> <!-- Fix executable permissions --> <chmod dir="${forge.dir}" perm="ugo+rx" includes="**.sh"/> <!-- Install forge --> <exec dir="${forge.dir}" executable="cmd" osfamily="windows"> <arg line="/c install.cmd"/> </exec> <exec dir="${forge.dir}" executable="sh" osfamily="unix"> <arg value="install.sh"/> </exec> </target> <target name="compile" depends="initialize-version,setup"> <delete dir="${classes.dir}"/> <mkdir dir="${classes.dir}"/> <!-- Copy sources --> <copy todir="${mcpsrc.dir}/minecraft"> <fileset dir="${src.dir}/common"/> <filterset> <filter token="VERSION" value="${project.version.full}" /> <filter token="BUILD_NUMBER" value="${build.number}" /> </filterset> </copy> <!-- Recompile --> <exec dir="${mcp.dir}" executable="cmd" osfamily="windows"> <arg line="/c recompile.bat"/> </exec> <exec dir="${mcp.dir}" executable="sh" osfamily="unix"> <arg value="recompile.sh"/> </exec> <!-- Check for failure --> <fail message="MCP failed to build"> <condition> <resourcecontains resource="${mcp.dir}/logs/client_compile.log" substring="error:"/> </condition> </fail> <!-- Reobfuscate --> <exec dir="${mcp.dir}" executable="cmd" osfamily="windows"> <arg line="/c reobfuscate.bat"/> </exec> <exec dir="${mcp.dir}" executable="sh" osfamily="unix"> <arg value="reobfuscate.sh"/> </exec> <!-- Copy classes --> <copy todir="${classes.dir}"> <fileset dir="${mcp.dir}/reobf/minecraft"/> </copy> <!-- Copy resources --> <copy todir="${classes.dir}"> <fileset dir="${resources.dir}"> <exclude name="build.xml"/> </fileset> </copy> <!-- Copy localizations --> <copy todir="${classes.dir}" failonerror="false"> <fileset dir="${lang.dir}"> <exclude name="README.md"/> </fileset> </copy> <!-- Reset src dir to post-forge-install state --> <delete dir="${mcpsrc.dir}/minecraft/buildcraft"/> </target> <!-- Package the compiled files --> <target name="package" depends="compile"> <delete dir="${jar.dir}"/> <mkdir dir="${jar.dir}"/> <jar destfile="${jar.dir}/${ant.project.name}-${mc.version}-${project.version.full}.jar" basedir="${classes.dir}"/> <copy todir="${jar.dir}/changelog"> <fileset dir="${resources.dir}/changelog"> <include name="*" /> </fileset> </copy> </target> <!-- Default target to run --> <target name="main" depends="package"/> </project>