Guest User

Untitled

a guest
Aug 29th, 2013
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 10.56 KB | None | 0 0
  1. <project name="Project: Red" basedir="../" default="package">
  2.     <property environment="env" />
  3.  
  4.     <property name="mod.version" value="4.0.0" />
  5.     <condition property="mod.build" value="${env.BUILD_NUMBER}" else="0">
  6.         <isset property="env.BUILD_NUMBER" />
  7.     </condition>
  8.  
  9.     <property name="src.dir" value="ProjectRed" />
  10.     <property name="build.dir" value="build" />
  11.     <property name="download.dir" value="download" />
  12.     <property name="jar.dir" value="dist" />
  13.     <property name="forge.dir" value="${build.dir}/forge" />
  14.     <property name="fmp.dir" value="${build.dir}/fmp" />
  15.     <property name="mcp.dir" value="${forge.dir}/mcp" />
  16.  
  17.     <property name="mc.version" value="1.6.2" />
  18.     <property name="forge.version" value="9.10.0.829" />
  19.     <property name="ccl.version" value="1.0.0.21" />
  20.     <property name="ccc.version" value="0.9.0.3" />
  21.     <property name="fmp.version" value="1.0.0.137" />
  22.     <property name="nei.version" value="1.6.1.2" />
  23.  
  24.     <property name="mod.name" value="ProjectRed-${mc.version}-${mod.version}.${mod.build}.jar" />
  25.     <property name="forge.name" value="minecraftforge-src-${mc.version}-${forge.version}.zip" />
  26.     <property name="ccl.name" value="CodeChickenLib-dev-${mc.version}-${ccl.version}.jar" />
  27.     <property name="ccc.name" value="CodeChickenCore-dev%20${ccc.version}.jar" />
  28.     <property name="fmp.name" value="ForgeMultipart-dev-${mc.version}-${fmp.version}.jar" />
  29.     <property name="nei.name" value="NotEnoughItems-dev%20${nei.version}.jar" />
  30.  
  31.  
  32.     <!-- Check downloaded dependencies -->
  33.     <available property="forge-downloaded" file="${download.dir}/${forge.name}" />
  34.     <available property="ccl-downloaded" file="${download.dir}/${ccl.name}" />
  35.     <available property="ccc-downloaded" file="${download.dir}/${ccc.name}" />
  36.     <available property="fmp-downloaded" file="${download.dir}/${fmp.name}" />
  37.     <available property="nei-downloaded" file="${download.dir}/${nei.name}" />
  38.  
  39.  
  40.     <!-- Check installed dependencies -->
  41.     <property name="build.dependencies.file" value="${build.dir}/dependencies.properties" />
  42.     <property prefix="build.dependencies" file="${build.dependencies.file}" />
  43.     <condition property="forge-installed">
  44.         <equals arg1="${build.dependencies.forge}" arg2="${forge.version}" />
  45.     </condition>
  46.     <condition property="ccl-installed">
  47.         <and>
  48.             <isset property="forge-installed" />
  49.             <equals arg1="${build.dependencies.ccl}" arg2="${ccl.version}" />
  50.         </and>
  51.     </condition>
  52.     <condition property="ccc-installed">
  53.         <and>
  54.             <isset property="forge-installed" />
  55.             <equals arg1="${build.dependencies.ccc}" arg2="${ccc.version}" />
  56.         </and>
  57.     </condition>
  58.     <condition property="fmp-installed">
  59.         <and>
  60.             <isset property="forge-installed" />
  61.             <equals arg1="${build.dependencies.fmp}" arg2="${fmp.version}" />
  62.         </and>
  63.     </condition>
  64.     <condition property="nei-installed">
  65.         <and>
  66.             <isset property="forge-installed" />
  67.             <equals arg1="${build.dependencies.nei}" arg2="${nei.version}" />
  68.         </and>
  69.     </condition>
  70.  
  71.  
  72.     <!-- Make directories -->
  73.     <mkdir dir="${build.dir}" />
  74.     <mkdir dir="${download.dir}" />
  75.     <mkdir dir="${jar.dir}" />
  76.  
  77.  
  78.     <!-- Targets for downloading dependencies -->
  79.     <target name="download-forge" unless="forge-downloaded">
  80.         <get src="http://files.minecraftforge.net/${forge.name}" dest="${download.dir}" usetimestamp="true" />
  81.     </target>
  82.  
  83.     <target name="download-ccl" unless="ccl-downloaded">
  84.         <get src="http://files.minecraftforge.net/CodeChickenLib/${ccl.name}" dest="${download.dir}" usetimestamp="true" />
  85.     </target>
  86.  
  87.     <target name="download-ccc" unless="ccc-downloaded">
  88.         <get src="http://www.chickenbones.craftsaddle.org/Files/New_Versions/${mc.version}/${ccc.name}" dest="${download.dir}" usetimestamp="true" />
  89.     </target>
  90.  
  91.     <target name="download-fmp" unless="fmp-downloaded">
  92.         <get src="http://files.minecraftforge.net/ForgeMultipart/${fmp.name}" dest="${download.dir}" usetimestamp="true" />
  93.     </target>
  94.  
  95.     <target name="download-nei" unless="nei-downloaded">
  96.         <get src="http://www.chickenbones.craftsaddle.org/Files/New_Versions/${mc.version}/${nei.name}" dest="${download.dir}" usetimestamp="true" />
  97.     </target>
  98.  
  99.  
  100.     <!-- Targets for installing dependencies -->
  101.     <target name="install-forge" depends="download-forge" unless="forge-installed">
  102.         <echo message="Deleteing old Forge" />
  103.         <delete dir="${forge.dir}" />
  104.  
  105.         <echo message="Installing Forge" />
  106.         <unzip src="${download.dir}/${forge.name}" dest="${forge.dir}/.." />
  107.         <property name="fml.python.exe" location="${forge.dir}/fml/python/python_fml.exe" />
  108.         <exec dir="${forge.dir}" executable="${fml.python.exe}" osfamily="windows" failonerror="true">
  109.             <arg line="install.py --no-assets" />
  110.         </exec>
  111.         <exec dir="${forge.dir}" executable="python" osfamily="unix" failonerror="true">
  112.             <arg line="install.py --no-assets" />
  113.         </exec>
  114.  
  115.         <echo message="Updating build.dependencies" />
  116.         <delete file="${build.dependencies.file}" />
  117.         <propertyfile file="${build.dependencies.file}">
  118.             <entry key="forge" value="${forge.version}" />
  119.         </propertyfile>
  120.     </target>
  121.  
  122.     <target name="install-ccl" depends="install-forge,download-ccl" unless="ccl-installed">
  123.         <echo message="Deleting old CodeChickenLib" />
  124.         <delete file="${mcp.dir}/lib/${build.dependencies.ccl.name}" />
  125.  
  126.         <echo message="Installing CodeChickenLib" />
  127.         <copy file="${download.dir}/${ccl.name}" todir="${mcp.dir}/lib" />
  128.  
  129.         <echo message="Updating build.dependencies" />
  130.         <propertyfile file="${build.dependencies.file}">
  131.             <entry key="ccl" value="${ccl.version}" />
  132.             <entry key="ccl.name" value="${ccl.name}" />
  133.         </propertyfile>
  134.     </target>
  135.  
  136.     <target name="install-ccc" depends="install-forge,download-ccc" unless="ccc-installed">
  137.         <echo message="Deleting old CodeChickenCore" />
  138.         <delete file="${mcp.dir}/lib/${build.dependencies.ccc.name}" />
  139.  
  140.         <echo message="Installing CodeChickenCore" />
  141.         <copy file="${download.dir}/${ccc.name}" todir="${mcp.dir}/lib" />
  142.  
  143.         <echo message="Updating build.dependencies" />
  144.         <propertyfile file="${build.dependencies.file}">
  145.             <entry key="ccc" value="${ccc.version}" />
  146.             <entry key="ccc.name" value="${ccc.name}" />
  147.         </propertyfile>
  148.     </target>
  149.  
  150.     <target name="install-fmp" depends="install-forge,download-fmp" unless="fmp-installed">
  151.         <echo message="Deleting old ForgeMultipart" />
  152.         <delete file="${mcp.dir}/lib/${build.dependencies.fmp.name}" />
  153.         <delete dir="${fmp.dir}" />
  154.  
  155.         <echo message="Installing ForgeMultipart" />
  156.         <copy file="${download.dir}/${fmp.name}" todir="${mcp.dir}/lib" />
  157.         <unzip src="${download.dir}/${fmp.name}" dest="${fmp.dir}">
  158.             <patternset>
  159.                 <include name="**/*.class" />
  160.             </patternset>
  161.         </unzip>
  162.  
  163.         <echo message="Updating build.dependencies" />
  164.         <propertyfile file="${build.dependencies.file}">
  165.             <entry key="fmp" value="${fmp.version}" />
  166.             <entry key="fmp.name" value="${fmp.name}" />
  167.         </propertyfile>
  168.     </target>
  169.  
  170.     <target name="install-nei" depends="install-forge,download-nei" unless="nei-installed">
  171.         <echo message="Deleting old NotEnoughItems" />
  172.         <delete file="${mcp.dir}/lib/${build.dependencies.nei.name}" />
  173.  
  174.         <echo message="Installing NotEnoughItems" />
  175.         <copy file="${download.dir}/${nei.name}" todir="${mcp.dir}/lib" />
  176.  
  177.         <echo message="Updating build.dependencies" />
  178.         <propertyfile file="${build.dependencies.file}">
  179.             <entry key="nei" value="${nei.version}" />
  180.             <entry key="nei.name" value="${nei.name}" />
  181.         </propertyfile>
  182.     </target>
  183.  
  184.     <target name="install-dependencies" depends="install-forge,install-ccl,install-ccc,install-fmp,install-nei" />
  185.  
  186.  
  187.     <!-- Targets for building -->
  188.     <target name="recompile" depends="install-dependencies">
  189.         <echo message="Copying source" />
  190.         <copy todir="${mcp.dir}/src/minecraft">
  191.             <fileset dir="${src.dir}/common" />
  192.             <filterset>
  193.                 <filter token="VERSION" value="${mod.version}" />
  194.                 <filter token="BUILD" value="${mod.build}" />
  195.             </filterset>
  196.         </copy>
  197.  
  198.         <echo message="Recompiling" />
  199.         <property name="mcp.python.exe" location="${mcp.dir}/runtime/bin/python/python_mcp.exe" />
  200.         <exec dir="${mcp.dir}" executable="${mcp.python.exe}" osfamily="windows" resultproperty="recompile.code">
  201.             <arg line="runtime/recompile.py" />
  202.         </exec>
  203.         <exec dir="${mcp.dir}" executable="python" osfamily="unix" resultproperty="recompile.code">
  204.             <arg line="runtime/recompile.py" />
  205.         </exec>
  206.  
  207.         <echo message="Removing source" />
  208.         <delete includeemptydirs="true">
  209.             <fileset dir="${mcp.dir}/src/minecraft">
  210.                 <present present="both" targetdir="${src.dir}/common" />
  211.             </fileset>
  212.         </delete>
  213.  
  214.         <fail message="Failed to recompile">
  215.             <condition>
  216.                 <isfailure code="${recompile.code}" />
  217.             </condition>
  218.         </fail>
  219.     </target>
  220.  
  221.     <target name="reobfuscate" depends="recompile">
  222.         <echo message="Copying ForgeMultipart" />
  223.         <copy todir="${mcp.dir}/bin/minecraft">
  224.             <fileset dir="${fmp.dir}" />
  225.         </copy>
  226.  
  227.         <echo message="Reobfuscating" />
  228.         <property name="mcp.python.exe" location="${mcp.dir}/runtime/bin/python/python_mcp.exe" />
  229.         <exec dir="${mcp.dir}" executable="${mcp.python.exe}" osfamily="windows" resultproperty="reobfuscate.code">
  230.             <arg line="runtime/reobfuscate.py --srgnames" />
  231.         </exec>
  232.         <exec dir="${mcp.dir}" executable="python" osfamily="unix" resultproperty="reobfuscate.code">
  233.             <arg line="runtime/reobfuscate.py --srgnames" />
  234.         </exec>
  235.  
  236.         <echo message="Removing ForgeMultipart" />
  237.         <delete includeemptydirs="true">
  238.             <fileset dir="${mcp.dir}/bin/minecraft">
  239.                 <present present="both" targetdir="${fmp.dir}" />
  240.             </fileset>
  241.             <fileset dir="${mcp.dir}/reobf/minecraft">
  242.                 <present present="both" targetdir="${fmp.dir}" />
  243.             </fileset>
  244.         </delete>
  245.  
  246.         <fail message="Failed to reobfuscate">
  247.             <condition>
  248.                 <isfailure code="${reobfuscate.code}" />
  249.             </condition>
  250.         </fail>
  251.     </target>
  252.  
  253.     <target name="package" depends="reobfuscate">
  254.         <echo message="Copying resources" />
  255.         <tempfile property="tmp.resources.dir" destdir="${build.dir}" prefix="resources" />
  256.         <copy todir="${tmp.resources.dir}">
  257.             <fileset dir="${src.dir}/resources" excludes="mcmod.info" />
  258.         </copy>
  259.         <copy todir="${tmp.resources.dir}">
  260.             <file file="${src.dir}/resources/mcmod.info" />
  261.             <filterset>
  262.                 <filter token="VERSION" value="${mod.version}" />
  263.                 <filter token="BUILD_NUMBER" value="${mod.build}" />
  264.             </filterset>
  265.         </copy>
  266.  
  267.         <echo message="Packaging" />
  268.         <jar destfile="${jar.dir}/${mod.name}">
  269.             <fileset dir="${mcp.dir}/reobf/minecraft" />
  270.             <fileset dir="${tmp.resources.dir}" />
  271.         </jar>
  272.  
  273.         <echo message="Removing resources" />
  274.         <delete dir="${tmp.resources.dir}" />
  275.     </target>
  276.  
  277.     <target name="ci">
  278.         <delete dir="${jar.dir}" />
  279.         <antcall target="package" />
  280.     </target>
  281. </project>
Advertisement
Add Comment
Please, Sign In to add comment