Jump to content

Recommended Posts

Posted

When writing a standard WorldGenerator for tree generation, or large structural or landscape features, we do a lot of checks for wood and leaf blocks. If we want to integrate with other mods, or have our trees grow in forest of custom trees,or have other's  trees grow in our forests, and if we want to support the decay of custom leaves on an equal basis with vanilla leaves, we need a registry for leaves and wood.

 

I have coded this in Extrabiomes and have the code ready to turn over to the forge team, but I'm unsure about who to talk to, or how to join the team as a coder. All that is required is two static sets and one interface. This works VERY well in practice with the mods that I have been able to support with Extrabiomes. Other developers play things more close to the vest and cannot be supported by our mod.

 

The results are difficult, for instance, our mod provides entire biomes of custom tree forests. Industrialcraft rubber will spawn in these biomes, but growth is often stifled because our leaves look like unknown block to that mod and so the tree grow fails. RedPower's volcanoes do not remove our leaves when the form, because the WorldGen can't identify our leaves as such and so the results look devastating.

 

I have done/am willing to do the work involved in making this small feature with a big impact available to all forge mods as a part of Forge. I would be grateful if someone could help me understand the process of adding this myself or donating the code to the project.

Posted

Humm, someone actually bothered to make extra trees and think of how to make them interact with each other properly, nice.

Your best bet for getting something into forge, is to clean it up, and submit a Pull Request on Github.

 

Ideally submitting a small example mod to showcase what you're trying to do.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

Thanks, LexManos and OvermindDL.

 

Github won't be a problem...I'll probably be needing help after I make my changes, because I am not familiar with the process.

 

I am curious abut what would be a good way to showcase this...I will prepare a mod, but in all honesty, the showcase mod would be about 20 times larger than the change itself...I suppose I could submit my test mod, but I fear that the subtleties of this might make it get lost.

 

I can very easily provide before and after screenshots as well as a save, with part of the terrain generated before the change and part after, to provide contrast in addition to the test mod.

 

What is the forge policy regarding vanilla changes? This feature would require one line changes to the wood block and several of the WorldGens as well as repairing a bug in the WorldGens for jungle trees where the wood block id is hardcoded...

 

If these are allowed, what tool do I use to make the patches to check in?

 

Thank you guys for being so receptive to this!

Posted

Thanks, LexManos and OvermindDL.

 

Github won't be a problem...I'll probably be needing help after I make my changes, because I am not familiar with the process.

 

I am curious abut what would be a good way to showcase this...I will prepare a mod, but in all honesty, the showcase mod would be about 20 times larger than the change itself...I suppose I could submit my test mod, but I fear that the subtleties of this might make it get lost.

Just a basic tree mod would probably work, have new ones grow and use your api properly.

 

I can very easily provide before and after screenshots as well as a save, with part of the terrain generated before the change and part after, to provide contrast in addition to the test mod.

 

What is the forge policy regarding vanilla changes? This feature would require one line changes to the wood block and several of the WorldGens as well as repairing a bug in the WorldGens for jungle trees where the wood block id is hardcoded...

I cannot speak for Lex but vanilla hooks seem to be well accepted if they have a useful purpose, are minimized in code (keep about all the code you can 'elsewhere', like in ForgeHooks.java, with just a single line or two in the vanilla class), and cannot already be done via some other method, like reflection (which your API here fills something that reflection cannot fix).

 

 

If these are allowed, what tool do I use to make the patches to check in?

Forge actually already has a script to do that.

 

You want to get Forge from github, not the source distribution.  The github version has a development set up for working on forge itself.  When set up, make your change, and there is a script that will auto generate patches and so forth.  Just run it, then push back to github as a pull request.  Lex has done an amazing job at keeping it very simple, and as such he can still explain it better.

 

Thank you guys for being so receptive to this!

This would be a very useful little hook, and one that *requires* vanilla changes, which is useful to have in Forge instead of 'other' mods editing base files.

 

It would also be useful if the API could be used to disallow blocks that trees overwrite.  Some mods have rather costly blocks that are often run in tree farm (think RedPower or BuildCraft), and being non-solid a growing tree can grow into and destroy the block, it would be nice to be able to mark a custom mod block as preventing tree growth as well.

Posted

I think I must be doing something wrong...I never have a problem decompiling with the forge releases...but I do the following and I get tons of patch errors...

 

[*]Clone forge from github

[*]Extract mcp into my project directory

[*]Put server jar in jars and copy bin and resource directories there too

[*]install.cmd (Apparently, the install scripts crash when run from forge/install...they like to be up one in forge)

 

Logs are here: http://www.mediafire.com/?wwge0tlo9pmvpo0 Any help would be appreciated (I know I am missing something...I feel like a newb)

Posted

It would also be useful if the API could be used to disallow blocks that trees overwrite.  Some mods have rather costly blocks that are often run in tree farm (think RedPower or BuildCraft), and being non-solid a growing tree can grow into and destroy the block, it would be nice to be able to mark a custom mod block as preventing tree growth as well.

 

I just saw this...I might as well add this while I'm in the code. It would be a nice feature.

Posted

Use setup, working ON Forge is different then working WITH forge.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

Lex,

 

I tried setup first last night, and I got some errors, so I then treid the process described above...

 

The process I followed tonight is this:

[*]Clone my branch of forge.

[*]Decompress mcp into the MinecraftForge directory (that contains the 'forge' directory.)

[*]Copy minecraft_server.jar and my clean vanilla bin and resource directories to the 'jars' directory.

[*]Run setup.bat

 

All looks fine, except that server recompilation chokes on a syntax error in BlockRedstoneRepeater.java and the application of patches looks good and then many multiple failures.

 

The set up script reports that all is well...but the server will not compile. It has MANY errors.

 

If this is the way it is supposed to be, I will continue, but it feels awkward with the server not compiling.

 

I appreciate your patience and understand that I sound like a complete noob...I just need to get my bearings in the build environment...

 

Once I get it, I'll be able to do get around pretty good.

 

So, is it ok that the server is not compiling?

Posted

Make sure you've copied the conf folder from forge/conf to mcp/conf

The setup script does not automatically do that, {as it would be stupid}

No patches should fail, so thats probably your issue.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

Pull request submitted.

 

Showcase mod source attached and at at http://www.mediafire.com/?8qjzvqa36281onq

 

I look forward to the feedback!

 

 

Mod illustrates custom trees (sandstone leaf texture) playing nicely with and behaving like vanilla trees. Also every chunk has a glass tower that leaves grow around, and not through, to illustrate that non-opaque blocks can be registered impervious to leaf growth.

TestMod.zip

Posted

Humm, woke up to your pull request, Will need to look into it and see whats whats, but, you also forgot the server side :P

But, only a bit of a issue there, I would move those tree-lists to just plain Block methods. And make them all world/location {and therefor TileEntity/Metadata} sensitive.

 

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

Thanks, Lex...

 

Didn't forget the server side...hesitated because I have never done any server side programming and because of the minor (;D) issue that I cannot get the server's forge patches to apply cleanly...I know this is something I am doing...but I am not doing anything except browsing the code and running a build script...so I'm not sure what behavior to stop on my end...

 

Also, I know I'm going to have to gain experience on server side programming given the way future versions of Minecraft are headed.

 

You know the code better than me, so I will defer to however you feel this should be done. I will recommit with these functions relegated to the block.

 

Any help you, or anyone else can provide with regard to the server implementation would be appreciated.

 

Regarding the server build errors, I clone forge, extract mcp, copy in the binaries to jars, copy forge/conf to mcp/conf and run setup.bat...everything goes great until it tries to apply the patches to server then it goes nuts...unless I am missing a step, I don't know how to fix it. Like you said earlier, it is something on my end, but I don't know what.

Posted

Hmmm...probably not in this case. I just tracked it to a PEBKAC error...  :-[ You'd be right to ban me for wasting your time.

 

Accounted for the idiot at my keyboard...and now it builds fine.

 

I'll revise my code and include the server this time.

Posted

https://github.com/MinecraftForge/MinecraftForge/commit/3b523d57a9ceef4684442b45a787a4441df612ed

You now are rivaling RP for hooks, 26 base edits for just you.

Go! Make many good tutorials on how to use this.

Make mods take advantage of this.

Make RedPower take advantage of this!

Make it worth my while! :P

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

Pretty good looking implementation.  I'll switch my mod over to it as soon as it seems like enough people have switched to a supporting forge version.  I wonder if there's any stats on that.

Posted

Thanks! I always struggle with that...when to start supporting a newer version of forge...

 

We keep older versions of the mod available, and only add new features to the newest version.

 

Right now, some of the features we need are not available until SMP, so as soon as the new Recommended build of forge is out, we will release a new version of our mod. Lots of people are clamoring for SMP.

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

    • This is the last line before the crash: [ebwizardry]: Synchronising spell emitters for PixelTraveler But I have no idea what this means
    • What in particular? I barely used that mod this time around, and it's never been a problem in the past.
    • Im trying to build my mod using shade since i use the luaj library however i keep getting this error Reason: Task ':reobfJar' uses this output of task ':shadowJar' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. So i try adding reobfJar.dependsOn shadowJar  Could not get unknown property 'reobfJar' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. my gradle file plugins { id 'eclipse' id 'idea' id 'maven-publish' id 'net.minecraftforge.gradle' version '[6.0,6.2)' id 'com.github.johnrengelman.shadow' version '7.1.2' id 'org.spongepowered.mixin' version '0.7.+' } apply plugin: 'net.minecraftforge.gradle' apply plugin: 'org.spongepowered.mixin' apply plugin: 'com.github.johnrengelman.shadow' version = mod_version group = mod_group_id base { archivesName = mod_id } // Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17. java.toolchain.languageVersion = JavaLanguageVersion.of(17) //jarJar.enable() println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" minecraft { mappings channel: mapping_channel, version: mapping_version copyIdeResources = true runs { configureEach { workingDirectory project.file('run') property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' arg "-mixin.config=derp.mixin.json" mods { "${mod_id}" { source sourceSets.main } } } client { // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. property 'forge.enabledGameTestNamespaces', mod_id } server { property 'forge.enabledGameTestNamespaces', mod_id args '--nogui' } gameTestServer { property 'forge.enabledGameTestNamespaces', mod_id } data { workingDirectory project.file('run-data') args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') } } } sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { flatDir { dirs './libs' } maven { url = "https://jitpack.io" } } configurations { shade implementation.extendsFrom shade } dependencies { minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" implementation 'org.luaj:luaj-jse-3.0.2' implementation fg.deobf("com.github.Virtuoel:Pehkui:${pehkui_version}") annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' minecraftLibrary 'luaj:luaj-jse:3.0.2' shade 'luaj:luaj-jse:3.0.2' } // Example for how to get properties into the manifest for reading at runtime. tasks.named('jar', Jar).configure { manifest { attributes([ 'Specification-Title' : mod_id, 'Specification-Vendor' : mod_authors, 'Specification-Version' : '1', // We are version 1 of ourselves 'Implementation-Title' : project.name, 'Implementation-Version' : project.jar.archiveVersion, 'Implementation-Vendor' : mod_authors, 'Implementation-Timestamp': new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), "TweakClass" : "org.spongepowered.asm.launch.MixinTweaker", "TweakOrder" : 0, "MixinConfigs" : "derp.mixin.json" ]) } rename 'mixin.refmap.json', 'derp.mixin-refmap.json' } shadowJar { archiveClassifier = '' configurations = [project.configurations.shade] finalizedBy 'reobfShadowJar' } assemble.dependsOn shadowJar reobf { re shadowJar {} } publishing { publications { mavenJava(MavenPublication) { artifact jar } } repositories { maven { url "file://${project.projectDir}/mcmodsrepo" } } } my entire project:https://github.com/kevin051606/DERP-Mod/tree/Derp-1.0-1.20
    • All versions of Minecraft Forge suddenly black screen even without mods (tried reinstalling original Minecraft, Java, updating drivers doesn't work)
  • Topics

×
×
  • Create New...

Important Information

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