Jump to content

Recommended Posts

Posted

Generally you just package your compiled source and your resources together into a jar package (using the jar creator built into JVM). At least when you are creating a coremod, you need a META-INF folder and a MANIFEST.MF file to designate the main mod file. I assume that you are working with a regular mod, in which case I don't know how that step differs. You should be able to look that up without much trouble.

Posted

Would anyone happen to know how to compile a mod as a jar, instead of a zip.

 

to all intents and purposes, a jar file is a zip file... if you zip it, and rename to a jar, it's a jar...

 

the differences become apparent when you want to sign the jar for security, and add meta data to the jar package... is that what you're needing to do it for?

 

 

edit... damn, hydro beat me to that :)

 

 

 

 

 

 

Posted

What I meant was, is it possible to compile it with eclipse, because Ive tried and it didn't work, so is there some way to do it. I have the Deathseeker512 setup, where My mod is in its own java project.

if (You.likescoding == false){
      You.goaway;
}

Posted

just run recompile.sh (or.bat for windows user) and reobfuscate.sh/.bat then all the files you need zipped will be in mcp/reob/minecraft/*

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted
i use an ant build... 

no actually ant build is super usefull

 

but i made my own script (in bash) that does the equivalent, zip, sign and upload to my server automaticly :P

 

@op if you care to learn ant it will be usefull, if you just want to do it the easy manual way, run those script

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

 

but i made my own script (in bash) that does the equivalent, zip, sign and upload to my server automaticly :P

 

 

:)

 

nice. to be honest, once i realised what the build.xml was actually instructing ant to do, i guess i could have done the same... bash is my friend :) but once i had ant doing it, i shrugged :) ... uploading it is a nice touch tho... i use a sshfs to my server, so that's trivial i guess [goes away to type in a terminal]

Posted

when i try to run the build script with ant this is what i get

 

/Users/kakarotvg/Desktop/forge modding 1.6.1/Hand_of_Omega/build.xml:10: The element type "project" must be terminated by the matching end-tag "</project>".

if (You.likescoding == false){
      You.goaway;
}

Posted

when i try to run the build script with ant this is what i get

 

/Users/kakarotvg/Desktop/forge modding 1.6.1/Hand_of_Omega/build.xml:10: The element type "project" must be terminated by the matching end-tag "</project>".

 

you've broken the xml somehow... either you've incorrectly terminated a quoted string, or generally hosed it... can't really tell without a pastebin of your xml... but it'll be something very silly like that... use an xml editor if possible, it should tell you

Posted

xml code

 

 

 

<?xml version="1.0" ?>

<project name="Hand_of_Omega" default="build">

 

<property file="build.properties" prefix="build"/>

<property file="build_number.properties" prefix="build_number"/>

 

<target name="clean"/>

<delete dir="${build.dir.development}\forge\mcp\src\minecraft\" />

<delete dir="${build.dir.development}\mcp\reobf\minecraft" />

</target>

 

<target name="increment_build_number">

<propertyfile file="build_number.properties">

<entry key="build_number" type="int" operation="+" default="1"/>

</propertyfile>

</target>

 

<target name="prep">

<copy todir="${build.dir.development}\forge\mcp\src\minecraft">

<fileset dir="${build.dir.development}\Hand_of_Omega\Common\" />

</copy>

</target>

 

<target name="replace_tokens">

<replace dir="${build.dir.development}\mcp\src\minecraft" token="@VERSION@" value="${build.release.mod.version}" />

<replace dir="${build.dir.development}\mcp\src\minecraft" token="@FINGERPRINT@" value="${build.release.mod.fingerprint}" />

<replace dir="${build.dir.development}\mcp\src\minecraft" token="@BUILD_NUMBER@" value="${build_number.build_number}" />

</target>

 

<target name="recompile">

<exec dir="${build.dir.development}\forge\mcp" executable="cmd" osfamily="windows">

<arg line="/c recompile.bat" />

</exec>

<exec dir="${build.dir.development}\forge\mcp" executable="bash" osfamily="unix">

<arg line="recompile.sh" />

</exec>

</target>

 

<target name="reobfuscate">

<exec dir="${build.dir.development}\forge\mcp" executable="cmd" osfamily="windows">

<arg line="/c reobfuscate_srg.bat" />

</exec>

<exec dir="${build.dir.development}\forge\mcp" executable="bash" osfamily="unix">

<arg line="reobfuscate_srg.sh" />

</exec>

</target>

 

<target name="sign_jar">

<signjar jar="${build.dir.release}\${build.release.minecraft.version}\${build.release.mod.version}\handofomega-${build.release.mod.version}-${build_number.build_number}.jar" keystore="${build.keystore.location}" alias="${build.keystore.alias}" storepass="${build.keystore.password}" />

</target>

 

<target name="build">

<!-- Prep for the build -->

<antcall target="clean" />

<antcall target="increment_build_number" />

<antcall target="prep" />

<antcall target="recompile" />

<antcall target="reobfuscate" />

 

<!-- Build the jar -->

<mkdir dir="${build.dir.release}\${build.release.minecraft.version}\${build.release.mod.version}" />

<jar destfile="${build.dir.release}\${build.release.minecraft.version}\${build.release.mod.version}\handofomega-${build.release.mod.version}-${build_number.build_number}.jar">

<fileset dir="${build.dir.development}\forge\mcp\src\minecraft\" includes="mcmod.info" />

<fileset dir="${build.dir.development}\forge\mcp\reobf\minecraft" />

<fileset dir="${build.dir.development}\forge\source\Hand_of_Omega\Resources" excludes="**/xcf/**" />

</jar>

 

<!-- Clean up the MCP source now that we are done -->

<antcall target="clean" />

</target>

 

<target name="release">

<!-- Prep for the build -->

<antcall target="clean" />

<antcall target="increment_build_number" />

<antcall target="prep" />

<antcall target="replace_tokens" />

<antcall target="recompile" />

<antcall target="reobfuscate" />

 

<!-- Build the jar -->

<mkdir dir="${build.dir.release}\${build.release.minecraft.version}\${build.release.mod.version}" />

<jar destfile="${build.dir.release}\${build.release.minecraft.version}\${build.release.mod.version}\handofomega-${build.release.mod.version}-${build_number.build_number}.jar">

<fileset dir="${build.dir.development}\forge\mcp\src\minecraft\" includes="mcmod.info" />

<fileset dir="${build.dir.development}\forge\mcp\reobf\minecraft" />

<fileset dir="${build.dir.development}\Hand_of_Omega\Resources" excludes="**/xcf/**" />

</jar>

 

<!-- Sign the finished jar -->

<antcall target="sign_jar" />

 

<!-- Clean up the MCP source now that we are done -->

<antcall target="clean" />

</target>

</project>

 

 

if (You.likescoding == false){
      You.goaway;
}

Posted

you can use xmllint on the command line in terminal...

 

and what it identifies is that you've closed "target" here:

 

  <target name="clean"/>

      <delete dir="${build.dir.development}\forge\mcp\src\minecraft\" />

      <delete dir="${build.dir.development}\mcp\reobf\minecraft" />

  </target>

 

take out that slash from the opening tag :)

 

 

[ edit: to clarify, xmllint is osx's xml commandline validator tool... i happen to use smultron as a general editor... but its xml validator seems to be lame ]

Posted

for those wondering this was what worked

 

 

 

<?xml version="1.0" encoding="UTF-8" ?>

 

<project name="Hand of Omega" basedir="../" default="build">

   

<target name="build">

       

<delete dir="build" />

<delete dir="forge/mcp/reobf/minecraft" />

       

        <copy todir="forge/mcp/src/minecraft">

       

        <fileset dir="Hand_of_Omega/Common/">

           

        </fileset>

       

        </copy>

       

<mkdir dir="build" />

       

<exec executable="recompile.bat" dir="forge/mcp" resolveexecutable="true" osfamily="windows"></exec>

       

<exec executable="reobfuscate.bat" dir="forge/mcp" resolveexecutable="true" osfamily="windows"></exec>

       

<exec executable="recompile.sh" dir="forge/mcp" resolveexecutable="true" osfamily="unix"></exec>

       

<exec executable="reobfuscate.sh" dir="forge/mcp" resolveexecutable="true" osfamily="unix"></exec>

   

       

<jar destfile="build/Hand_of_Omega.jar">

           

<fileset dir="forge/mcp/reobf/minecraft" />

            <fileset dir="Hand_of_Omega/Resources"/>

           

</jar>

       

</target>

   

</project>

 

 

if (You.likescoding == false){
      You.goaway;
}

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I have no idea what the flip is going on, I can load the modpack just fine at forge 42.2.0 but any forge version above it insta-crashes with exit code 1. Can somebody tell me what's going on, this is minecraft 1.20.1 Latest.log: https://pastebin.com/pBUL1ZFa
    • does anyone know how to incorporate custom noise settings into a custom dimension through the use of datagen, I have created a custon json file for the noise settings that I want but I just don't know how to get it to register with the generated json file of the custom dimension.   here is the code for the dimension class package net.hurst.lustria.worldgen.dimension; import com.mojang.datafixers.util.Pair; import net.hurst.lustria.Lustria; import net.hurst.lustria.worldgen.biome.ModBiomes; import net.hurst.lustria.worldgen.registries.LustriaNoiseSettings; import net.minecraft.core.HolderGetter; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstapContext; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.util.valueproviders.ConstantInt; import net.minecraft.world.level.Level; import net.minecraft.world.level.biome.*; import net.minecraft.world.level.dimension.BuiltinDimensionTypes; import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator; import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; import java.util.List; import java.util.OptionalLong; public class ModDimensions { public static final ResourceKey<LevelStem> LUSTRIA_KEY = ResourceKey.create(Registries.LEVEL_STEM, ResourceLocation.fromNamespaceAndPath(Lustria.MOD_ID, "lustriadim")); public static final ResourceKey<Level> LUSTRIA_LEVEL_KEY = ResourceKey.create(Registries.DIMENSION, ResourceLocation.fromNamespaceAndPath(Lustria.MOD_ID, "lustriadim")); public static final ResourceKey<DimensionType> LUSTRIA_DIM_TYPE = ResourceKey.create(Registries.DIMENSION_TYPE, ResourceLocation.fromNamespaceAndPath(Lustria.MOD_ID, "lustriadim_type")); public static void bootstrapType(BootstapContext<DimensionType> context) { context.register(LUSTRIA_DIM_TYPE, new DimensionType( OptionalLong.of(12000), // fixedTime false, // hasSkylight true, // hasCeiling false, // ultraWarm false, // natural 1.0, // coordinateScale true, // bedWorks false, // respawnAnchorWorks -64, // minY 256, // height 256, // logicalHeight BlockTags.INFINIBURN_OVERWORLD, // infiniburn BuiltinDimensionTypes.OVERWORLD_EFFECTS, // effectsLocation 0.0f, // ambientLight new DimensionType.MonsterSettings(false, false, ConstantInt.of(0), 0))); } public static void bootstrapStem(BootstapContext<LevelStem> context) { HolderGetter<Biome> biomeRegistry = context.lookup(Registries.BIOME); HolderGetter<DimensionType> dimTypes = context.lookup(Registries.DIMENSION_TYPE); HolderGetter<NoiseGeneratorSettings> noiseGenSettings = context.lookup(Registries.NOISE_SETTINGS); NoiseBasedChunkGenerator wrappedChunkGenerator = new NoiseBasedChunkGenerator( new FixedBiomeSource(biomeRegistry.getOrThrow(Biomes.BEACH)), noiseGenSettings.getOrThrow(NoiseGeneratorSettings.CAVES)); NoiseBasedChunkGenerator noiseBasedChunkGenerator = new NoiseBasedChunkGenerator( MultiNoiseBiomeSource.createFromList( new Climate.ParameterList<>(List.of(Pair.of( Climate.parameters(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F), biomeRegistry.getOrThrow(Biomes.BEACH)), Pair.of( Climate.parameters(0.1F, 0.2F, 0.0F, 0.2F, 0.0F, 0.0F, 0.0F), biomeRegistry.getOrThrow(Biomes.BIRCH_FOREST)), Pair.of( Climate.parameters(0.3F, 0.6F, 0.1F, 0.1F, 0.0F, 0.0F, 0.0F), biomeRegistry.getOrThrow(Biomes.OCEAN)), Pair.of( Climate.parameters(0.4F, 0.3F, 0.2F, 0.1F, 0.0F, 0.0F, 0.0F), biomeRegistry.getOrThrow(Biomes.DARK_FOREST)) ))), noiseGenSettings.getOrThrow(NoiseGeneratorSettings.CAVES)); LevelStem stem = new LevelStem(dimTypes.getOrThrow(ModDimensions.LUSTRIA_DIM_TYPE), noiseBasedChunkGenerator); context.register(LUSTRIA_KEY, stem); } } minecraft version is 1.20.1
    • Please read the FAQ (https://forums.minecraftforge.net/topic/125488-rules-and-frequently-asked-questions-faq/) and post logs as described there using a site like https://mclo.gs and post the link to it here. It may have the information required to solve your problem.  
    • the error code comes up when i trry to run it and ive tried to fix it but i cant  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.